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

来源:互联网 发布:淘宝怎么判定假冒商品 编辑:程序博客网 时间:2024/06/05 00:30

一、开发背景

        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);}
注意:发现三星手机是没有办法跳转至设置页面的,只能跳转至权限状态页面。

原创粉丝点击