多语言展示
当前在线:653今日阅读:23今日分享:25

Android 判断摄像头是否可用

Android 判断摄像头是否可用呢?下面就跟小编一起来看一看吧。
工具/原料
1

手机

2

PC

方法/步骤
1

在做ocr 的时候遇到个问题,点击拍照/扫描页面的入口Button,弹出一个对话框 申请拍照和录像权限、禁止/允许。如果这个时候点击了禁止,或者自己在移动设备的权限设置里把APP的 拍照和摄像 权限改为拒绝(或者禁止)。那么当我们在app 中再想调用拍照和摄像的功能就不行了, 有的手机没有任何反应,有的干脆就直接挂掉。

2

问题分析android 6.0  Google 对Android的权限做了比较大的修改,比较好处理。问题主要是体现在6.0 以下的系统。这是我用的一款测试机打印出来的log,忘记是SX还是XM了。 Caused by: Camera permission has been disabled for current app。

3

而MX5的比较怪,其他的魅族机没有测试 Caused by: java.lang.RuntimeException: Camera is being used after Camera.release() was called最开始的时候还以为是摄像头的资源没有释放掉之类的问题引起的,但是在权限管理中把摄像头的权限打开就没有这种问题,真心醉了,为什么会报这样的错误!但是问题肯定是权限导致的。

4

网上有种方法是根据 checkPermission 判断权限,但这是判断是否在清单文件中注册了权限,并不能判断当前的摄像头是否被禁止,可用!1.  PackageManager pm = getPackageManager();   2.  boolean permission = (PackageManager.PERMISSION_GRANTED ==   3.          pm.checkPermission(android.permission.CAMERA , packageName));   4.  if (permission) {   5.          showToast(有这个权限);   6.  }else {   7.          showToast(木有这个权限);   8.  }

5

找到种可行的处理方法,是用抓取 Camera.open() 异常的方法来解决,比较暴力。(如下图)而我们可以在APP进入拍照/扫描 页面的入口处,会先针对权限进行检查。如果有摄像头权限,则正常使用;没有摄像头使用权限,可以弹出个权限弹层或者相关提示之类的告诉用户正在使用的app 没有摄像头权限,需要自己开启。(如下图)

注意事项

由于限制,提供的代码中没有引号,请大家自行添加。

推荐信息