如何在Android中通过摄像头捕捉多张照片

问题描述:

我知道这个问题已经被问到了,但是我还没有找到一个可靠的解决方案,因为我曾经在很多例子中工作过,但没有一个能正确地工作。我从this post找到一个例子。如何在Android中通过摄像头捕捉多张照片

我使用了commonsware源代码。它工作正常,但是当我使用代码时,我的相机在水平布局而不是垂直布局中打开。

我知道这样做有两种方法。一个通过Camera API,另一个通过意图的事情。为了捕捉单个快照,我使用了意图部分,它工作得很好。

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
       intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); 
       intent.setType("image/*"); 
startActivityForResult(Intent.createChooser(intent,"Select Picture"), RESULT_LOAD_IMAGE); 

但这种不断点击图片,我的要求是我需要它停止点击后5张图像。

我没有得到任何线索如何实现这一点。

@克里斯哈钦森已经张贴在How to take multiple photos before dismissing camera intent?

这个答案我通过SDK文档,有是为设备相机的替代意图的行动,启动静止图像模式的相机,直到用户完成不退出发现与活动:

Intent intent = new Intent(
    MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA); 
    this.startActivity(intent); 

结合ContentObserver这正是我需要完成。

+0

“对于以静止图像模式启动相机并且在用户完成该活动之前不会退出的设备相机存在备选意图动作” - 任何第三方应用程序相对于该“意图“行动取决于第三方应用程序的实施者,而不是你。没有要求任何相机应用程序“不会退出,直到用户完成该活动”。所以,你*可能*用一些相机应用程序获得该行为,但不是全部。 – CommonsWare 2014-10-01 10:36:24

+0

您可以使用ContentObserver来跟踪点击了多少照片,如果照片数量是5,那么您可以在其上面启动您的活动。 – 2014-10-01 13:37:38

+0

没有要求相机应用程序将其图像存储在某处,您可以通过ContentObserver进行监视,特别是通过“ACTION_IMAGE_CAPTURE”或“INTENT_ACTION_STILL_IMAGE_CAMERA”返回的图像。例如,没有要求相机应用程序具有由“MediaStore”索引的这种图像,因此宁愿将其留给正在调用相机的开发人员。 – CommonsWare 2014-10-01 14:54:15

但这种不断点击图片

任何第三方应用程序的行为相对于这个Intent行动,并额外达到该应用程序的实施者。

我的要求是我需要它停止点击5张照片后的图像。

你没有办法迫使全球的相机应用程序开发人员在五点后停止拍照,或强迫用户拿五点。

我对如何实现这一点没有任何线索。

使用Camera API。请注意,编写适用于所有设备的相机应用程序非常困难。

+0

为什么负分? – 2017-07-31 15:24:36