用于捕获图像和视频的 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 意图,即从图库中选择图像并使用前置摄像头捕获图像