Android相机权限检测兼容问题

在做Android开发过程中,兼容问题一直都是安卓攻城狮们的常见的一个问题,各种手机品牌的兼容。还有API版本高低的兼容。

这里主要针对Android相机开发的兼容问题之 Fail to connect camera service错误;刚遇到这个问题的时候,在网上看了好多资料,大部分都是说的这四种元(都是容易忽略的东西):
1、手机上有安装安全过滤软件,因为Camera属于较为敏感权限,所有有些手机安全软件会自动拒绝Camera的打开操作,就会出现connect fail 错误。

解决办法:在手机安全软件中,降低Camera的安全级别,或者把自己的APP添加到白名单中。
个人评价:对于用户还可以实施。对于安卓攻城狮来说~然而并没有什么卵用。

2、AndroidManifest.xml文件里面没有添加Camera的权限。没啥可说的,添加上就可以了:

3、之前打开过camera,没有释放。释放掉:
camera.stopPreview();  
 camera.release();
camera = null;

4、内容占用过多,可能导致了自己应用可分配的内存不足。这种场景一般是因为你对摄像头取得的每一帧数据都进行了额外的处理,随着处理的次数越来越多,如果没有及时销毁掉前面的对象,就会出现这个错误。
解决办法:把之前的对象释放掉。


我遇到的问题,这四个办法都没有解决;问题属于第二种情况,但是我的AndroidManifest.xml文件里面添加了权限的申请,这是为什么呢?因为:

针对android 6.0(API 23)及以前的版本,在AndroidManifest.xml文件里面添加权限就可以用了,但是对于Android 6.0以后的版本,系统允许用户单独管理应用的某个权限,打开或者关闭。我遇到的问题就是这个API版本兼容的问题。

解决办法:在进行相机操作之前,检测相机权限,
if(ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {

//申请WRITE_EXTERNAL_STORAGE权限
ActivityCompat.requestPermissions(this,newString[]{Manifest.permission.CAMERA},1);}

if里面是检测是否用Camera权限,如果没有则去申请。弹出对话框,用户来确认打开与否。

你可能感兴趣的:(Android相机权限检测兼容问题)