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驱动进程挂掉
本文介绍了一种检测Android设备上摄像头是否可用的方法。通过在非UI线程中尝试调用Camera.open()并捕获异常来判断摄像头的状态。此方法虽有效但存在局限性,如资源消耗及未处理camera驱动挂掉的情况。

5343

被折叠的 条评论
为什么被折叠?



