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