时间:2021-05-20
如题,既然是判断用户是否允许了摄像头权限,那么,咱们就忽略是Manifest配置的问题,因为这是开发者的事。
用户在使用APP时,如果首次进入用摄像头的地方,手机会提示是否允许该应用使用摄像头。有些用户小手一抖、或者压根就不想开启摄像头,咔擦,就给你关了,那好了。下回再进入该功能,就会出现APP一片黑,或者崩溃的情况。
作为开发者,正常思路是要提示用户,摄像头权限被你关了,赶紧去手动开启,不然,就别想用该功能了!那,咱们该怎么实现这个思路呢?
一、判断摄像头权限
Android API没提供判断摄像头权限是否被关闭的方法,但是,我们依然有办法,直接上代码:
public static booleanisCameraUseable() {boolean canUse =true;Camera mCamera =null;try{mCamera = Camera.open();// setParameters 是针对魅族MX5。MX5通过Camera.open()拿到的Camera对象不为nullCamera.Parameters mParameters = mCamera.getParameters();mCamera.setParameters(mParameters);}catch(Exception e) {canUse =false;} if(mCamera !=null) { mCamera.release(); } return canUse; }上面方法,放心copy到你的代码里,在使用摄像头之前,调用一下,返回ture说明摄像头权限是开启的。反之,摄像头权限被用户关掉了。
附注:
1、可以看出代码实现思路是通过调用Camera.open(),然后根据是否出现异常来判断权限状态。感兴趣的同学可以看看Android SDK里的android.hardware.Camera这个类,在第490行左右的代码,google就是这么干的。
Camera(intcameraId) {interr = cameraInitNormal(cameraId);if(checkInitErrors(err)) {switch(err) {case EACCESS:throw newRuntimeException("Fail to connect to camera service");case ENODEV:throw newRuntimeException("Camera initialization failed");default:// Should never hit this.throw newRuntimeException("Unknown camera error");}}}2、由于魅族MX5的ROM改了很多东西,google大哥的方法不能完全直接用,于是又加了上面有注释处的代码,这里不做过多解释。
二、给提示
如果摄像头权限被用户关掉了,处理思路是:弹出个对话框,提示用户去系统设置中,找到摄像头管理权限界面,手动打开摄像头权限。
三、跳转设置界面手动开启权限
跳转设置界面的代码如下:
Intent intent =new Intent(Settings.ACTION_SETTINGS);context.startActivity(intent);附注:有的人会问,为啥不直接跳到摄像头权限管理界面去呢,换个action不就行了?是的,这种思路没错,但是不同厂家手机打开摄像头权限管理界面的action是不一样的,差别太大,本人试过,整不动。。。感兴趣的同学可以试试哦,验证一下
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Android开发实现拍照功能的方法。分享给大家供大家参考,具体如下:解析:1)判断是否有摄像头checkCameraHardware(this)
本文实例讲述了Android编程实现摄像头临摹效果的方法。分享给大家供大家参考,具体如下:这篇文章结合本人的开发实例,介绍如何实现摄像头临摹效果,即将摄像头拍摄
本文实例为大家分享了js调用设备摄像头的具体代码,供大家参考,具体内容如下使用getUserMedia这个API来获取摄像头的权限兼容chrome和火狐,IOS
本文实例讲述了C#实现IP摄像头的方法。分享给大家供大家参考。具体实现方法如下:#regionIP摄像头代码//////ip摄像头代码/////视频privat
腾讯会议打不开摄像头,可能是没有打开相机权限导致的,腾讯会议申请的摄像头权限一般只用于开会议时使用。而如果用户在会议之外开启摄像头权限去拍照时,腾讯会议是没有权