5

如何通过使用 4.3 中的意图调用 Android 相机应用程序来捕获视频。我让它在 4.2 及以下版本中工作。甚至谷歌的样本也坏了。这是一个错误吗?或者谷歌改变了他们返回录制视频的方式。图像捕获仍然有效。

我仍然得到 RESULT_OK 回复,但 MediaStore.ACTION_VIDEO_CAPTURE 意图上的意图数据为空。

4

1 回答 1

9

问题

是的,从 Android 4.3 版本开始就有一个错误。

正如文档所说:

如果 EXTRA_OUTPUT 不存在,视频将被写入视频的标准位置,并且该位置的 Uri 将在 Uri 的数据字段中返回。

我所经历的是返回的数据字段值Null不是包含视频文件的Uri.


解决方案

现在,如果设备的API 版本为 18 ,则传递MediaStore.EXTRA_OUTPUTIntent指定视频文件的输出位置。这按预期工作。

由于您使用默认图库位置来存储视频,我猜您会希望保持不变。因此,为此您需要进行EXTRA_OUTPUT如下设置。

  1. 将新记录插入 MediaStore.Video.Media.EXTERNAL_CONTENT_URI

    Uri videoUri = context.getContentResolver().insert(EXTERNAL_CONTENT_URI, value);
    

    作为新视频文件valueContentValues显示名称、文件类型和文件路径。例如:

    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);
    
  2. 将返回值 ,videoUri作为EXTRA_OUPUT传递给Intent

于 2013-09-07T19:38:17.957 回答