【问题标题】:Video capture in Android 4.3 using Camera app intent使用相机应用意图在 Android 4.3 中捕获视频
【发布时间】:2013-08-30 15:27:48
【问题描述】:
如何通过使用 4.3 中的 Intent 调用 Android 相机应用来捕获视频。我让它在 4.2 及以下版本中工作。甚至Google's sample is broken。这是一个错误吗?或者谷歌改变了他们返回录制视频的方式。图像捕获仍然有效。
我仍然收到 RESULT_OK,但 MediaStore.ACTION_VIDEO_CAPTURE 意图上的意图数据为空。
【问题讨论】:
标签:
android
android-intent
android-4.3-jelly-bean
【解决方案1】:
问题
是的,有一个bug starting with Android 4.3 release。
正如documentation 所说:
如果 EXTRA_OUTPUT 不存在,视频将被写入
视频的标准位置,该位置的 Uri 将是
在 Uri 的数据字段中返回。
我的经验是返回的数据字段值是Null,而不是包含视频文件的Uri。
解决方案
现在,如果设备的 API Version 为 18,则将 MediaStore.EXTRA_OUTPUT 传递给 Intent,指定视频文件的输出位置。这按预期工作。
由于您使用默认库位置来存储视频,我猜您会希望保持它不变。所以为此你需要如下设置EXTRA_OUTPUT。
-
插入一条新记录
MediaStore.Video.Media.EXTERNAL_CONTENT_URI:
Uri videoUri = context.getContentResolver().insert(EXTERNAL_CONTENT_URI, value);
作为value 和ContentValues,具有新视频文件的显示名称、文件类型和文件路径。例如。 :
ContentValues value = new ContentValues();
value.put(MediaStore.Video.Media.TITLE, "VideoTitle");
value.put(MediaStore.Video.Media.MIME_TYPE, "video/mp4");
value.put(MediaStore.Video.Media.DATA, videoFilePath);
将返回值videoUri 作为EXTRA_OUPUT 传递给Intent。