使用Camera app intent在Android 4.3中捕获视频

时间:2013-08-27 18:32:10

标签: android android-intent android-4.3-jelly-bean

如何使用4.3中的意图调用Android相机应用来捕获视频。我让它在4.2及以下工作。甚至是Google's sample is broken。这是一个错误吗?或者谷歌改变了他们返回录制视频的方式。图像捕捉仍然有效。

我仍然得到一个RESULT_OK但是在MediaStore.ACTION_VIDEO_CAPTURE意图上意图数据为空。

1 个答案:

答案 0 :(得分:9)

问题

是的,有bug starting with Android 4.3 release

正如documentation所说:

  

如果没有EXTRA_OUTPUT,视频将被写入   视频的标准位置,以及该位置的Uri   在Uri的数据字段中返回。

我所体验的是返回的数据字段值为Null,而不是包含视频文件的Uri


解决方案

目前,如果设备的API Version为18,则将MediaStore.EXTRA_OUTPUT传递给Intent指定视频文件的输出位置。这可以按预期工作。

由于您使用默认的图库位置来存储视频,我的猜测是您希望保持相同。因此,您需要按如下方式设置EXTRA_OUTPUT

  1. 将新记录插入 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);
    
  2. 将返回的值videoUri作为EXTRA_OUPUT传递给Intent