android中,
调用摄像头需要判断当前摄像头的状态,没找到对应的方法,
采用了个折中方法。
在非main线程里调用Camera.open,catch 相应的RuntimeException,
/**
* 测试当前摄像头能否被使用
* @return
*/
public static boolean isCameraCanUse() {
boolean canUse = true;
Camera mCamera = null;
try {
// TODO camera驱动挂掉,处理??
mCamera = Camera.open();
} catch (Exception e) {
canUse = false;
}
if (canUse) {
mCamera.release();
mCamera = null;
}
return canUse;
}
需要注意的是应该在自己程序的非UI线程中进行上面的判断,因为进入自己的UI线程会导致当前其他程序正在拍摄视频自动终止,
因为UI线程只能有一个在运行。
这个方法可用,但是如果摄像头没有被使用,open和release会白白消耗些资源,另外camera驱动进程挂掉的情况没有考虑。
不知怎样让camera驱动进程挂掉