如何在取消相机意图之前拍摄多张照片?

23

我正在尝试使用通过意图启动的默认设备相机应用程序(MediaStore.ACTION_IMAGE_CAPTURE)拍摄多张照片。在我测试的设备上,相机会启动、拍照、要求确认,然后返回到我的活动中处理结果。

我考虑使用广播接收器回调或内容观察器; 但是,我无法找到一种方法来启动相机并使其保持活动状态,直到用户完成操作。如果可能的话,我希望避免开发自定义相机应用程序。

我必须这样做的原因是因为用户通常需要连续拍摄多张照片,在某些设备上,相机启动时间长达5秒以上,并且使用该软件的用户会连续拍摄10-30张照片;不仅如此,他们还需要控制各种相机参数。

有没有一种方法可以启动相机意图,并且只有在用户退出相机应用程序后才返回到我的活动中?

1个回答

22

我通过SDK文档发现,设备相机有一种替代意图操作,可以在静态图像模式下启动相机并且直到用户完成活动前不会退出:

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

搭配一个ContentObserver,这正是我需要完成的。


它正常工作。但是当我按返回键时,我会收到空指针异常。你能建议我如何摆脱它吗? - Meghna
@Chris Hutchinson:它正在获取多个图像,但我们如何将捕获的图像路径或文件名放入我们的应用程序中? - John
这是相当久以前的事了,但我遇到的最好方法是使用ContentObserver来检测图像何时被创建。如果您觉得这不够可靠,可以检查路径是否在手机的相机目录内。可能有一个API来定位这个目录,我记不清了。 - Chris Hutchinson
2
你好,你是如何在这里使用ContentObserver的?请帮忙,我也遇到了同样的情况。 - Calin Martinconi
1
ContentObserver存在一个主要缺陷。当相机意图完成后,您必须停止观察照片目录。但是,如果有人在从相机意图返回之前关闭了应用程序呢?您的观察器仍将继续工作并捕获新的照片,如果有人在您的应用程序外使用相机应用程序。 - kazuar
显示剩余3条评论

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