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

kas*_*oku 5 android android-intent android-4.3-jelly-bean

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

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

Jua*_*ana 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);
    
    Run Code Online (Sandbox Code Playgroud)

    作为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);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将返回的值,videoUri作为EXTRA_OUPUTIntent.