2

我正在制作一个使用相机手电筒的应用程序。

我打开相机:

 Camera cam = Camera.open();

当我启动我的应用程序时,如果另一个应用程序已经在使用相机,我会收到一个错误:

java.lang.RuntimeException: Fail to connect to camera service

首先,如果相机已经被另一个应用程序打开,有什么方法可以继续使用它?

如果不可能,我希望我的应用程序显示一条消息“相机已在使用中”而不是崩溃。

在这种情况下,如何检测相机是否已被另一个应用程序打开?

4

2 回答 2

5

如果相机正在被另一个应用程序使用,我认为在该应用程序以一种或另一种方式发布它之前你可以做很多事情。但是,您可以实现一个 try-catch 块来捕获异常:

try {
    Camera cam = Camera.open();
}
catch(RuntimeException exception) {
    Toast.makeText(this, "The camera and flashlight are in use by another app.", Toast.LENGTH_LONG).show();
    // Exit gracefully
}
于 2012-07-18T21:59:09.643 回答
3

Android CameraService 不允许两个客户端同时访问相机。即使您的设备有 2 个摄像头(正面和背面),您也只能操作其中的一个,并且一次只能通过 1 个应用程序操作。你别无选择,只能按照 Sam 的建议“优雅地退出”。

于 2012-07-18T23:01:15.067 回答