【问题标题】: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

    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

    【讨论】:

    • 谢谢胡安,正是我想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    • 2012-11-03
    • 2016-05-19
    • 2013-08-26
    相关资源
    最近更新 更多