我们的应用程序作为后台服务运行,不断从正面相机获取图像,然后处理图像。但是,当用户尝试打开另一个使用相机的应用程序时,会发生两件事:新应用程序崩溃,我们的应用程序崩溃,或者我们的崩溃和新的崩溃都可以访问相机。
现在,如果我们的应用程序失去了对相机的控制权,那么我们可以捕获一个异常,然后我们可以开始尝试访问它,直到我们获得访问权限并且事情恢复正常。
问题在于其他应用程序因我们的而崩溃。有没有办法检测到这一点,所以我们可以暂停我们的应用程序,直到我们可以再次访问相机?
答案 0 :(得分:0)
这是因为相机是独家资源。
我建议你阅读Camera documentation,其中写着:
如果您的应用程序未正确释放相机,则全部 随后尝试访问相机,包括您自己的相机 应用程序,将失败并可能导致您或其他应用程序 关闭。
答案 1 :(得分:0)
不幸的是,Camera API或Android SDK通常不提供此类信息。好消息是,越来越多的新设备可以让您独立打开前置摄像头和后置摄像头。这样可以减少发生冲突的可能性。
根据您的描述,可能会使与您竞争的应用程序因访问摄像机而崩溃,这是合法的,但是,开个玩笑,您对此无能为力。他们没有正确检查RuntimeException是他们的错。
Android最近加强了应用程序之间的隔离,因此,除非您的应用程序具有系统特权,否则可能无法跟踪启动了哪些应用程序(请参见 App to monitor other apps on android )。