用于捕获图像和视频的 Android 意图?

Posted

技术标签:

【中文标题】用于捕获图像和视频的 Android 意图?【英文标题】:Android Intent for Capturing both Images and Videos? 【发布时间】:2013-05-09 05:54:08 【问题描述】:

是否有一个 Intent 用于启动带有在 android 上捕获图片和视频的选项的相机?

我已使用 MediaStore.ACTION_VIDEO_CAPTURE 和 MediaStore.ACTION_IMAGE_CAPTURE 来捕获音频或视频,但我找不到可以在两者之间切换的 Intent,如本示例应用程序所示:

谢谢!

【问题讨论】:

运气好吗?!!... 【参考方案1】:

不可能使用相同的意图捕获图像和视频,您的选择是

1) 创建自己的相机this repo can be a good start 但这将是一个太多的努力。

2) 使用选择器意图并传递图像和视频的意图,这将使您可以选择分别录制视频和摄像头的应用程序。在这你不能同时做这两件事,但可以根据你想做的事情选择应用程序,捕捉图像或录制视频。下面是适合我的代码。

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
Intent chooserIntent = Intent.createChooser(takePictureIntent, "Capture Image or Video");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[]takeVideoIntent);
startActivityForResult(chooserIntent, CAPTURE_MEDIA_RESULT_CODE);

【讨论】:

这种情况下如何得到结果? @walkmn 图像和视频的结果会有所不同。我正在开发一个用于聊天的开源库,并在其中实现了它,请查看github.com/ChatCamp/ChatCamp-Android-UI-Kit/blob/master/chatkit/…【参考方案2】:

我做到了:) 您可以按照以下方式进行操作--

    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
    Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER);
Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT);
            contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE);
            contentSelectionIntent.setType("*/*");
    intentArray = new Intent[]takePictureIntent,takeVideoIntent;
    chooserIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent);
    chooserIntent.putExtra(Intent.EXTRA_TITLE, "Choose an action");
    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);
    startActivityForResult(chooserIntent, 1);

类似的例子here

编码愉快:)

【讨论】:

什么是 contentSelectionIntent ? @ParasWatts 忘记添加一些行。请立即检查。【参考方案3】:

我可以使用下面的代码捕获图像和视频。

Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);

【讨论】:

MediaStore.INTENT_ACTION_VIDEO_CAMERA也可以用。 如何在 ONactivity 结果中检索捕获的图像或视频?? 此意图不允许您检索捕获的内容 @Tomer Weller 知道为什么意图不允许我们检索捕获的内容。有什么方法可以在捕获图像/视频后停止预览并返回调用活动。 Intent 参数 ACTION_VIDEO_CAPTURE 和 ACTION_IMAGE_CAPTURE 似乎是专门设计用于启动相机、捕获一段媒体(分别为视频或图像)并返回它。这通常从 startActivityForResult 开始。使用 INTENT_ACTION_VIDEO_CAMERA 参数只是启动相机并且不返回任何结果。我不相信这回答了 OP 的问题。

以上是关于用于捕获图像和视频的 Android 意图?的主要内容,如果未能解决你的问题,请参考以下文章

为啥使用相机意图捕获的图像会在 Android 上的某些设备上旋转?

在 android 中使用 MediaStore.ACTION_IMAGE_CAPTURE 意图捕获图像

具有多个选项的 Android 意图,即从图库中选择图像并使用前置摄像头捕获图像

android中相机捕获的隐式意图

MediaStore.EXTRA_VIDEO_QUALITY不适用于Android视频捕获

Android 捕获和显示图像应用程序