华为手机的后置摄像头想要实现扫码功能,必须要开启后置摄像头的预览画面也就是拍摄画面,而后置摄像头的使用也需要开启相应的权限才行,比如手机相机的敏感类型权限ohos.permiss
华为手机的后置摄像头想要实现扫码功能,必须要开启后置摄像头的预览画面也就是拍摄画面,而后置摄像头的使用也需要开启相应的权限才行,比如手机相机的敏感类型权限ohos.permission.CAMERA。
下面,我们一起在自己的APP项目中来实现相机权限-ohos.permission.CAMERA的获取和开启。
一.打开项目中的配置文件config.json,通过“reqPermissions”字段声明相机相关的权限。二.在MainAbilitySlice类中,使用requestPermissionFromUser来动态申请相机的权限。public class MainAbilitySlice extends AbilitySlice { public static final int MY_PERMISSIONS_REQUEST_CAMERA = 1039;@Override public void onStart(intent intent) { super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main); requestCameraPermission(); }//1.获取相机权限 public void requestCameraPermission(){ if (verifySelfPermission("ohos.permission.CAMERA") != IBundleManager.PERMISSION_GRANTED) { // 应用未被授予权限 if (canRequestPermission("ohos.permission.CAMERA")) { // 是否可以申请弹框授权(首次申请或者用户未选择禁止且不再提示) requestPermissionsFromUser( new String[] { "ohos.permission.CAMERA" } , MY_PERMISSIONS_REQUEST_CAMERA); } else { // 显示应用需要权限的理由,提示用户进入设置授权 new ToastDialog(getContext()).setText("请进入手机系统【设置】中,重新开启应用的相机权限").show(); } } else { // 权限已成功被授予 new ToastDialog(getContext()).setText("已授权,可使用相机的拍摄功能").show(); //相机预览界面// addQrLayout(); } }}三.在MainAbility中,通过onRequestPermissionsFromUserResult回调函数来接收授予相机权限的结果。 public class MainAbility extends Ability { private static final int PERMISSION_REQUEST_CODE = MainAbilitySlice.MY_PERMISSIONS_REQUEST_CAMERA; @Override public void onStart(Intent intent) { super.onStart(intent); super.setMainRoute(MainAbilitySlice.class.getName()); } //调用requestPermissionsFromUser后的权限申请应答 @Override public void onRequestPermissionsFromUserResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode){ case PERMISSION_REQUEST_CODE: { if (grantResults.length > 0 && grantResults[0] == IBundleManager.PERMISSION_GRANTED){ new ToastDialog(getContext()).setText("此应用已授权,可进行相机的拍摄").show(); }else{ new ToastDialog(getContext()).setText("权限被拒绝").show(); } return; } } }}四.进行项目的真机测试,查看项目的APP是否有相关权限内容的提示,如果有相关提示框出现则表示手机的摄像头使用权限可以进行开通。
如果APP在打开之后,出现上图所示的提示框,我们选择并点击“仅使用期间允许”按钮,即可真正开通手机相机功能的权限。
结语:手机实现扫码的第一步需要开通相机功能相关的权限,比如ohos.permission.CAMERA权限。而后置摄像头之所以能正常进行画面的拍摄,需要在APP初次安装时去启动并获取相机功能给予的权限,保证在后面进行拍摄时其画面不出现“黑屏”。