带有MediaStore.EXTRA_OUTPUT的Nexus Camera ACTION_VIDEO_CAPTURE

时间:2018-04-19 13:21:34

标签: android android-intent android-video-record

在我们的应用程序中,我们为用户提供了使用MediaStore.ACTION_VIDEO_CAPTURE拍摄新视频的选项,或者使用Intent.ACTION_GET_CONTENT意图获取当前存储在手机中的视频。在使用默认Google相机应用的Nexus设备中,我们无法访问使用MediaStore.ACTION_VIDEO_CAPTURE意图拍摄的新视频。

如果我们只是致电

Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(takeVideoIntent, Globals.UPLOAD_VIDEO_NEW);

onActivityResult内,来自URI的{​​{1}}并未指向正确的位置。视频会使用此方法保存到设备上,因此用户可以尝试再次上传。但我们并不想让用户完成这些额外的步骤。

我用于所有设备的下一个方法,我有一个类data.getData()我创建并传递为mCurrentMediaUri额外的意图。

MediaStore.EXTRA_OUTPUT

然而,对于使用Google相机应用的Nexus设备使用此方法,视频不仅不会存储在给定的mCurrentMediaUri = FileProvider.getUriForFile(UpdateProfileActivity.this, BuildConfig.APPLICATION_ID + ".provider", videoFile); takeVideoIntent.putExtra(MediaStore.EXTRA_OUTPUT, mCurrentMediaUri); if (takeVideoIntent.resolveActivity(getPackageManager()) != null) { startActivityForResult(takeVideoIntent, Globals.UPLOAD_VIDEO_NEW); } ,也不会存储在设备本地任何地方。

如果用户从Play商店下载其他相机应用,我们就不会遇到此问题。如果我们没有通过URIURI传递给意图,我们是否可以找到存储视频的位置?我找到了这篇文章Camera app of Nexus 6P does not write video file to MediaStore.EXTRA_OUTPUT ,但它说明了

"视频可在/data/data/com.commonsware.android.videorecord/files/videos"找到;

根据我的理解,我们无法访问该目录。有人曾经遇到过这个问题,如果有的话,怎么解决?

0 个答案:

没有答案