android---判断当前摄像头功能是否权限打开以及遇到java.lang.RuntimeException: Method called after release()解决办法

  

java.lang.RuntimeException: Method called after release()

 在今天的BUG里面出现了这么一个错误,其实我这边的操作是,打开APP里面有个要打开摄像头的模块,当时弹框提示是否打开摄像头,当时选择禁用,然后在打开这个摄像头模块 就报这个错了

所以我的解决办法就是,每次打开都检测是否打开了权限

解决办法如下



/**
 * 相机检测
 * Created by yangbin on 2018/3/19.
 */

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()) {

            holder = mSurfaceview.getHolder();
            holder.addCallback(this);
        } else {
            Toast.makeText(getActivity(), "没相机权限,请到应用程序权限管理开启权限", Toast.LENGTH_LONG).show();
            //跳转至app设置
            getAppDetailSettingIntent();
            return;
        }


//        holder = mSurfaceview.getHolder();
//        holder.addCallback(this);
    }
设置相机

/**
 * 相机权限设置
 * 跳转至设置页面
 */
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);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值