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

28

在Android上,是否有一个意图(Intent)可以启动相机,并提供拍摄照片和视频的选项?

我曾经使用过MediaStore.ACTION_VIDEO_CAPTURE和MediaStore.ACTION_IMAGE_CAPTURE来捕捉音频或视频,但是我找不到一种Intent可以切换两者之间的选项,就像这个示例应用程序中一样:

输入图像描述

谢谢!

3个回答

9

无法使用相同的意图捕捉图像和视频,您的选项是:

1)创建自己的相机。 这个repo可以作为一个很好的开始,但需要花费大量精力。

2)使用Chooser Intent并传递图像和视频的意图,这将使您可以选择只记录视频和相机的应用程序。在此过程中,您无法同时执行两个操作,但可以根据您要捕获图像还是记录视频来选择应用程序。以下是适用于我的代码:

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
1
@walkmn 结果对于图像和视频将会有所不同。我正在开发一个聊天的开源库,并已经在其中实现了它,请查看此链接 https://github.com/ChatCamp/ChatCamp-Android-UI-Kit/blob/master/chatkit/src/main/java/com/chatcamp/uikit/messages/sender/CameraAttachmentSender.java - shubham

8

我成功了 :) 你可以通过以下方法做到 --

    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);

类似的例子可以在这里找到。

祝你编码愉快 :)


什么是 contentSelectionIntent? - Paras Watts
@ParasWatts 忘记添加一些代码行,请现在检查。 - pallav bohara

4
我可以使用以下代码同时捕获图像和视频。
Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);

MediaStore.INTENT_ACTION_VIDEO_CAMERA 也可以被使用。 - Nizam
11
如何在ONactivity result中检索捕获的图像或视频? - Rakesh Gondaliya
4
这个意图不会让你检索捕获的内容。 - Tomer Weller
@Tomer Weller,你有什么想法为什么意图不允许我们检索捕获的内容。在捕获图像/视频后是否有任何方法停止预览并返回到调用活动。 - Mightian
9
参数ACTION_VIDEO_CAPTURE和ACTION_IMAGE_CAPTURE被设计用于启动相机、捕获媒体(分别为视频或图像)并返回结果。通常使用startActivityForResult来启动此操作。使用INTENT_ACTION_VIDEO_CAMERA参数仅会启动相机,而不会返回任何结果。我认为这并没有回答提问者的问题。 - BK-
@BK- 你说得对!关于这个问题有任何更新吗?!! - Muhammed Refaat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接