《Android 测试当前摄像头是否能被调用和权限设置》

xiaoxiao2021-02-28  123

一、开发背景

        1.使用场景:(1)拍照;(2)扫一扫;(3)镜子;

        2.不能用的情况:(1)没有给app摄像头权限;(2)手机电量不足;(3)摄像头损坏等;

        我们在开发过程中,也容易出现这样的问题。在我们排除是代码问题的情况下,就是硬件问题。那么怎么检测是否有权限呢?

二、代码

/** * Created by laizhen on 2017/6/23. */ public class CameraCanUseUtils { /** * 测试当前摄像头能否被使用 * * @return */ public static boolean isCameraCanUse() { boolean canUse = true; Camera mCamera = null; try { mCamera = Camera.open(0); mCamera.setDisplayOrientation(90); } catch (Exception e) { canUse = false; } if (canUse) { mCamera.release(); mCamera = null; } //Timber.v("isCameraCanuse="+canUse); return canUse; } }

//使用

//调用相机权限判定 if (CameraCanUseUtils.isCameraCanUse()) { Log.i(TAG, "相机"); } else { ToastUtils.showTextToast(mContext, "没相机权限,请到应用程序权限管理开启权限"); //跳转至app设置 getAppDetailSettingIntent(); return; }

//设置相机

/** * 相机权限设置 * 跳转至设置页面 */ private void getAppDetailSettingIntent() { Intent localIntent = new Intent(); if (Build.VERSION.SDK_INT >= 9) { localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS"); localIntent.setData(Uri.fromParts("package", mContext.getPackageName(), null)); } else if (Build.VERSION.SDK_INT <= 8) { localIntent.setAction(Intent.ACTION_VIEW); localIntent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails"); localIntent.putExtra("com.android.settings.ApplicationPkgName", mContext.getPackageName()); } startActivity(localIntent); }

注意:发现三星手机是没有办法跳转至设置页面的,只能跳转至权限状态页面。

 

转载请注明原文地址: https://www.6miu.com/read-69759.html

最新回复(0)