Android:如何使用相同的相机意图捕获多张照片

Posted

技术标签:

【中文标题】Android:如何使用相同的相机意图捕获多张照片【英文标题】:Android: How to capture multiple photos with the same camera intent 【发布时间】:2018-01-14 04:01:10 【问题描述】:

我制作了一个 android 应用程序,它可以一张一张地拍照、存储照片、向用户提供预览等等……所有这些任务都是以 ACTION_IMAGE_CAPTURE 类型的意图完成的。 所以,每次用户想要拍照时,他都应该点击启动意图的“拍照按钮”,等待几秒钟后启动相机,用户就可以拍照了;拍摄照片并被用户接受后,相机关闭,拍摄的照片通过onActivityResult 方法返回给调用类(作为预览的位图)。 现在,如果你想做多张照片,这个过程可能真的很乏味。

因此,我想为我的应用提供一种模式,允许用户拍摄多张照片,而不会出现上述所有缓慢的问题。 只是为了澄清一下,我不想制作连拍模式(在预定义的时间间隔后自动拍摄照片),但我想让用户能够点击快门以尽可能多的时间拍照而不会被其他人打断东西。

在网上搜索,我找到了一些资料,在我看来有三种可能的方法: - 对“INTENT_ACTION_STILL_IMAGE_CAMERA”的意图:这个很容易实现,但是相机界面将很大程度上依赖于在做出意图时调用的应用程序(例如在我的一加三上,为完成此任务而调用的应用程序是“Camera FV-5 Lite”,在模拟设备上是另一个)...因此,我认为无法控制被调用应用程序的界面或行为(对于例如,在通过意图调用的应用程序上可以切换到视频模式,但这在我正在设计的应用程序中应该是不可能的); - 使用“Camera2”包 (https://developer.android.com/reference/android/hardware/camera2/package-summary.html):谷歌在https://github.com/search?utf8=%E2%9C%93&q=android-Camera2&type= 上提供了这个包的一些示例,但我不完全明白走这条路有多难; - 自己做一个拍照代码:我认为这是最难的方法。

初学者和中级开发人员是否可以按照上述方式之一(或其他方式)完成此任务?

类似问题: - Taking Multiple Photos from Android device :这里询问如何加快处理速度并减少一张照片与另一张照片之间的延迟; - Making a gallery with automatically generated ImageView s:这个问题是关于使用通过不同意图制作的照片动态更新画廊到 ACTION_IMAGE_CAPTURE; - How to take multiple photos before dismissing camera intent?:这个人谈论解决方案的意图是INTENT_ACTION_STILL_IMAGE_CAMERA,再加上ContentObserver,我不想像上面提到的那样追求; - Issues when capturing Multiple Photos: app stops responding, camera preview turns to green and no picture is saved:老帖子讨论了拍摄多张照片时的问题,但一个答案很有趣,因为提到了 Camera2。

【问题讨论】:

【参考方案1】:

意图“INTENT_ACTION_STILL_IMAGE_CAMERA”

这与您的任何其他选项都没有真正的相似之处。例如,您不知道是否拍摄了任何照片、它们的存储位置等。

因此,我认为无法控制被调用应用的界面或行为

正确。这与ACTION_IMAGE_CAPTURE 相同。

使用包“Camera2”

这与“自己制作拍照代码”相同,只是您为其确定了特定的 Android API。

初学者和中级开发人员是否可以按照上述方式之一(或其他方式)完成此任务?

使用第三方相机库(Fotoapparat、CameraKit-Android 等)。

【讨论】:

谢谢,我不知道有像这样的相机管理库。我应该更频繁地考虑搜索和使用它们。在接下来的几周内,我将尝试在我的应用中实现其中一个库。 我用过 Fotoapparat,效果很好。再次感谢:) 这会在 onActivityResult 中给出数据空值。如何获取这些图像? @VivekPratapSingh:我不知道“this”是什么或“this Gives data null”是什么意思。我建议您提出一个单独的 Stack Overflow 问题,您可以在其中提供minimal reproducible example展示您正在尝试的内容并解释您的症状。

以上是关于Android:如何使用相同的相机意图捕获多张照片的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Cordova 相机插件拍摄多张照片

Android相机意图:如何获得全尺寸照片?

在 Android 中使用相同的 Intent 捕获图像和视频

使用 Ionic 使用相机拍摄多张照片

用相机意图拍照以肖像模式android旋转图片

Android:BroadcastReceiver 意图检测拍摄的相机照片?