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);
|
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:
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue