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驱动进程挂掉的情况没有考虑

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐