检测相机是否已打开

时间:2012-07-18 21:32:32

标签: android android-camera

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

我打开相机:

 Camera cam = Camera.open();

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

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

首先,如果相机已经被其他应用程序打开,有没有办法继续使用相机?

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

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

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:3)

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