mirror of
https://github.com/deltachat/deltachat-android.git
synced 2025-10-03 09:49:21 +02:00
implement alternative method to get recorded videos
This commit is contained in:
parent
a0b7aa4066
commit
9d255bc343
2 changed files with 36 additions and 20 deletions
|
@ -344,7 +344,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
|
|||
Log.w(TAG, "onActivityResult called: " + 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))
|
||||
{
|
||||
return;
|
||||
|
@ -378,15 +378,20 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
|
|||
supportInvalidateOptionsMenu();
|
||||
break;
|
||||
case TAKE_PHOTO:
|
||||
if (attachmentManager.getCaptureUri() != null) {
|
||||
setMedia(attachmentManager.getCaptureUri(), MediaType.IMAGE);
|
||||
if (attachmentManager.getImageCaptureUri() != null) {
|
||||
setMedia(attachmentManager.getImageCaptureUri(), MediaType.IMAGE);
|
||||
}
|
||||
break;
|
||||
case RECORD_VIDEO:
|
||||
Uri uri = data.getData();
|
||||
if(uri!=null) {
|
||||
Uri uri = null;
|
||||
if (data!=null) { uri = data.getData(); }
|
||||
if (uri==null) { uri = attachmentManager.getVideoCaptureUri(); }
|
||||
if (uri!=null) {
|
||||
setMedia(uri, MediaType.VIDEO);
|
||||
}
|
||||
else {
|
||||
Toast.makeText(this, "No video returned from system", Toast.LENGTH_LONG).show();
|
||||
}
|
||||
break;
|
||||
case PICK_LOCATION:
|
||||
/*
|
||||
|
|
|
@ -83,7 +83,8 @@ public class AttachmentManager {
|
|||
|
||||
private @NonNull List<Uri> garbage = new LinkedList<>();
|
||||
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) {
|
||||
this.context = activity;
|
||||
|
@ -139,11 +140,13 @@ public class AttachmentManager {
|
|||
}
|
||||
|
||||
public void cleanup() {
|
||||
cleanup(captureUri);
|
||||
cleanup(imageCaptureUri);
|
||||
cleanup(videoCaptureUri);
|
||||
cleanup(getSlideUri());
|
||||
|
||||
captureUri = null;
|
||||
slide = Optional.absent();
|
||||
imageCaptureUri = null;
|
||||
videoCaptureUri = null;
|
||||
slide = Optional.absent();
|
||||
|
||||
Iterator<Uri> iterator = garbage.listIterator();
|
||||
|
||||
|
@ -168,11 +171,13 @@ public class AttachmentManager {
|
|||
}
|
||||
|
||||
private void setSlide(@NonNull Slide slide) {
|
||||
if (getSlideUri() != null) cleanup(getSlideUri());
|
||||
if (captureUri != null && !captureUri.equals(slide.getUri())) cleanup(captureUri);
|
||||
if (getSlideUri() != null) cleanup(getSlideUri());
|
||||
if (imageCaptureUri != null && !imageCaptureUri.equals(slide.getUri())) cleanup(imageCaptureUri);
|
||||
if (videoCaptureUri != null && !videoCaptureUri.equals(slide.getUri())) cleanup(videoCaptureUri);
|
||||
|
||||
this.captureUri = null;
|
||||
this.slide = Optional.of(slide);
|
||||
this.imageCaptureUri = null;
|
||||
this.videoCaptureUri = null;
|
||||
this.slide = Optional.of(slide);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -418,8 +423,12 @@ public class AttachmentManager {
|
|||
return slide.isPresent() ? slide.get().getUri() : null;
|
||||
}
|
||||
|
||||
public @Nullable Uri getCaptureUri() {
|
||||
return captureUri;
|
||||
public @Nullable Uri getImageCaptureUri() {
|
||||
return imageCaptureUri;
|
||||
}
|
||||
|
||||
public @Nullable Uri getVideoCaptureUri() {
|
||||
return videoCaptureUri;
|
||||
}
|
||||
|
||||
public void capturePhoto(Activity activity, int requestCode) {
|
||||
|
@ -431,11 +440,11 @@ public class AttachmentManager {
|
|||
try {
|
||||
Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
|
||||
if (captureIntent.resolveActivity(activity.getPackageManager()) != null) {
|
||||
if (captureUri == null) {
|
||||
captureUri = PersistentBlobProvider.getInstance(context).createForExternal(context, MediaUtil.IMAGE_JPEG);
|
||||
if (imageCaptureUri == null) {
|
||||
imageCaptureUri = PersistentBlobProvider.getInstance(context).createForExternal(context, MediaUtil.IMAGE_JPEG);
|
||||
}
|
||||
Log.w(TAG, "captureUri path is " + captureUri.getPath());
|
||||
captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, captureUri);
|
||||
Log.w(TAG, "imageCaptureUri path is " + imageCaptureUri.getPath());
|
||||
captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageCaptureUri);
|
||||
activity.startActivityForResult(captureIntent, requestCode);
|
||||
}
|
||||
} catch (IOException ioe) {
|
||||
|
@ -454,7 +463,9 @@ public class AttachmentManager {
|
|||
try {
|
||||
Intent captureIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
|
||||
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());
|
||||
captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, videoCaptureUri);
|
||||
captureIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue