implement alternative method to get recorded videos

This commit is contained in:
B. Petersen 2019-05-11 14:09:26 +02:00
parent a0b7aa4066
commit 9d255bc343
No known key found for this signature in database
GPG key ID: 3B88E92DEA8E9AFC
2 changed files with 36 additions and 20 deletions

View file

@ -344,7 +344,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
Log.w(TAG, "onActivityResult called: " + reqCode + ", " + resultCode + " , " + data); Log.w(TAG, "onActivityResult called: " + reqCode + ", " + resultCode + " , " + data);
super.onActivityResult(reqCode, resultCode, data); super.onActivityResult(reqCode, resultCode, data);
if ((data == null && reqCode != TAKE_PHOTO && reqCode != SMS_DEFAULT) || if ((data == null && reqCode != TAKE_PHOTO && reqCode != RECORD_VIDEO && reqCode != SMS_DEFAULT) ||
(resultCode != RESULT_OK && reqCode != SMS_DEFAULT)) (resultCode != RESULT_OK && reqCode != SMS_DEFAULT))
{ {
return; return;
@ -378,15 +378,20 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
supportInvalidateOptionsMenu(); supportInvalidateOptionsMenu();
break; break;
case TAKE_PHOTO: case TAKE_PHOTO:
if (attachmentManager.getCaptureUri() != null) { if (attachmentManager.getImageCaptureUri() != null) {
setMedia(attachmentManager.getCaptureUri(), MediaType.IMAGE); setMedia(attachmentManager.getImageCaptureUri(), MediaType.IMAGE);
} }
break; break;
case RECORD_VIDEO: case RECORD_VIDEO:
Uri uri = data.getData(); Uri uri = null;
if(uri!=null) { if (data!=null) { uri = data.getData(); }
if (uri==null) { uri = attachmentManager.getVideoCaptureUri(); }
if (uri!=null) {
setMedia(uri, MediaType.VIDEO); setMedia(uri, MediaType.VIDEO);
} }
else {
Toast.makeText(this, "No video returned from system", Toast.LENGTH_LONG).show();
}
break; break;
case PICK_LOCATION: case PICK_LOCATION:
/* /*

View file

@ -83,7 +83,8 @@ public class AttachmentManager {
private @NonNull List<Uri> garbage = new LinkedList<>(); private @NonNull List<Uri> garbage = new LinkedList<>();
private @NonNull Optional<Slide> slide = Optional.absent(); private @NonNull Optional<Slide> slide = Optional.absent();
private @Nullable Uri captureUri; private @Nullable Uri imageCaptureUri;
private @Nullable Uri videoCaptureUri;
public AttachmentManager(@NonNull Activity activity, @NonNull AttachmentListener listener) { public AttachmentManager(@NonNull Activity activity, @NonNull AttachmentListener listener) {
this.context = activity; this.context = activity;
@ -139,11 +140,13 @@ public class AttachmentManager {
} }
public void cleanup() { public void cleanup() {
cleanup(captureUri); cleanup(imageCaptureUri);
cleanup(videoCaptureUri);
cleanup(getSlideUri()); cleanup(getSlideUri());
captureUri = null; imageCaptureUri = null;
slide = Optional.absent(); videoCaptureUri = null;
slide = Optional.absent();
Iterator<Uri> iterator = garbage.listIterator(); Iterator<Uri> iterator = garbage.listIterator();
@ -168,11 +171,13 @@ public class AttachmentManager {
} }
private void setSlide(@NonNull Slide slide) { private void setSlide(@NonNull Slide slide) {
if (getSlideUri() != null) cleanup(getSlideUri()); if (getSlideUri() != null) cleanup(getSlideUri());
if (captureUri != null && !captureUri.equals(slide.getUri())) cleanup(captureUri); if (imageCaptureUri != null && !imageCaptureUri.equals(slide.getUri())) cleanup(imageCaptureUri);
if (videoCaptureUri != null && !videoCaptureUri.equals(slide.getUri())) cleanup(videoCaptureUri);
this.captureUri = null; this.imageCaptureUri = null;
this.slide = Optional.of(slide); this.videoCaptureUri = null;
this.slide = Optional.of(slide);
} }
/* /*
@ -418,8 +423,12 @@ public class AttachmentManager {
return slide.isPresent() ? slide.get().getUri() : null; return slide.isPresent() ? slide.get().getUri() : null;
} }
public @Nullable Uri getCaptureUri() { public @Nullable Uri getImageCaptureUri() {
return captureUri; return imageCaptureUri;
}
public @Nullable Uri getVideoCaptureUri() {
return videoCaptureUri;
} }
public void capturePhoto(Activity activity, int requestCode) { public void capturePhoto(Activity activity, int requestCode) {
@ -431,11 +440,11 @@ public class AttachmentManager {
try { try {
Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (captureIntent.resolveActivity(activity.getPackageManager()) != null) { if (captureIntent.resolveActivity(activity.getPackageManager()) != null) {
if (captureUri == null) { if (imageCaptureUri == null) {
captureUri = PersistentBlobProvider.getInstance(context).createForExternal(context, MediaUtil.IMAGE_JPEG); imageCaptureUri = PersistentBlobProvider.getInstance(context).createForExternal(context, MediaUtil.IMAGE_JPEG);
} }
Log.w(TAG, "captureUri path is " + captureUri.getPath()); Log.w(TAG, "imageCaptureUri path is " + imageCaptureUri.getPath());
captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, captureUri); captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageCaptureUri);
activity.startActivityForResult(captureIntent, requestCode); activity.startActivityForResult(captureIntent, requestCode);
} }
} catch (IOException ioe) { } catch (IOException ioe) {
@ -454,7 +463,9 @@ public class AttachmentManager {
try { try {
Intent captureIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); Intent captureIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
if (captureIntent.resolveActivity(activity.getPackageManager()) != null) { if (captureIntent.resolveActivity(activity.getPackageManager()) != null) {
Uri videoCaptureUri = PersistentBlobProvider.getInstance(context).createForExternal(context, "video/mp4"); if (videoCaptureUri==null) {
videoCaptureUri = PersistentBlobProvider.getInstance(context).createForExternal(context, "video/mp4");
}
Log.w(TAG, "videoCaptureUri path is " + videoCaptureUri.getPath()); Log.w(TAG, "videoCaptureUri path is " + videoCaptureUri.getPath());
captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, videoCaptureUri); captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, videoCaptureUri);
captureIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); captureIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);