Android|教你如何在安卓上实现通用卡证识别一键各种卡绑定( 二 )


1.4 在AndroidManifest.xml文件里面申请相机和存储权限都是些基本操作,废话也不多说,按照官网指导来操作:https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/ml-assigning-permissions-4
2 代码开发2.1 启动卡证识别@Override public void onClick(View v) {switch (v.getId()) {// 相册图片检测按钮 。case R.id.detect_picture:this.startLocalImageActivity(cardImage, null, callback);break;// 视频流检测按钮 。case R.id.detect_video:this.startCaptureActivity(null, callback);break;// 拍照检测按钮 。case R.id.detect_take_photo:this.startTakePhotoActivity(null, callback);break;default:break;} }视频流识别
private void startCaptureActivity(Object object, MLGcrCapture.Callback callback) {// 创建通用卡证识别配置器 。MLGcrCaptureConfig cardConfig = new MLGcrCaptureConfig.Factory().create();// 创建通用卡证识别界面配置器 。MLGcrCaptureUIConfig uiConfig = new MLGcrCaptureUIConfig.Factory()// 设置扫描框颜色 。.setScanBoxCornerColor(Color.GREEN)// 设置扫描框中的提示文字,建议少于30个字符 。.setTipText("Recognizing, align edges")// 设置识别界面横竖屏,支持三种模式:// MLGcrCaptureUIConfig.ORIENTATION_AUTO:自动模式 , 由物理感应器决定显示方向 。// MLGcrCaptureUIConfig.ORIENTATION_LANDSCAPE:横屏模式 。// MLGcrCaptureUIConfig.ORIENTATION_PORTRAIT:竖屏模式 。.setOrientation(MLGcrCaptureUIConfig.ORIENTATION_AUTO).create();// 方式一:根据自定义的卡证识别界面配置器,创建通用卡证识别处理器 。MLGcrCapture ocrManager = MLGcrCaptureFactory.getInstance().getGcrCapture(cardConfig, uiConfig);// 方式二:使用默认界面,创建通用卡证识别处理器 。MLGcrCapture ocrManager = MLGcrCaptureFactory.getInstance().getGcrCapture(cardConfig);// 绑定通用卡证识别处理器和处理结果回调函数 。ocrManager.capturePreview(this, object, callback); }拍照识别
private void startTakePhotoActivity(Object object, MLGcrCapture.Callback callback) {// 创建通用卡证识别配置器 。MLGcrCaptureConfig cardConfig = new MLGcrCaptureConfig.Factory().create();// 创建通用卡证识别界面配置器 。MLGcrCaptureUIConfig uiConfig = new MLGcrCaptureUIConfig.Factory()// 设置扫描框颜色 。.setScanBoxCornerColor(Color.BLUE)// 设置扫描框中的提示文字,建议少于30个字符 。.setTipText("Taking picture, align edges")// 设置界面横竖屏 , 支持三种模式:// MLGcrCaptureUIConfig.ORIENTATION_AUTO:自动模式,由物理感应器决定显示方向 。// MLGcrCaptureUIConfig.ORIENTATION_LANDSCAPE:横屏模式 。// MLGcrCaptureUIConfig.ORIENTATION_PORTRAIT:竖屏模式 。.setOrientation(MLGcrCaptureUIConfig.ORIENTATION_AUTO).create();// 方式一:根据自定义的卡证识别界面配置器,创建通用卡证识别处理器 。MLGcrCapture ocrManager = MLGcrCaptureFactory.getInstance().getGcrCapture(cardConfig, uiConfig);// 方式二:使用默认界面 , 创建通用卡证识别处理器 。MLGcrCapture ocrManager = MLGcrCaptureFactory.getInstance().getGcrCapture(cardConfig);// 绑定通用卡证识别处理器和处理结果回调函数 。ocrManager.capturePhoto(this, object, callback); }相册图片识别
private void startLocalImageActivity(Bitmap bitmap, Object object, MLGcrCapture.Callback callback) {// 创建通用卡证识别配置器 。MLGcrCaptureConfig config = new MLGcrCaptureConfig.Factory().create();MLGcrCapture ocrManager = MLGcrCaptureFactory.getInstance().getGcrCapture(config);// bitmap 为需要识别的Bitmap类型卡证图像,支持的图片格式包括:jpg/jpeg/png/bmp 。ocrManager.captureImage(bitmap, object, callback); }2.2 对识别后的内容做后处理,进行关键信息提取 重载onResult ,  onCanceled,onFailure ,  onDenied四个方法;onResult表示返回了结果,MLGcrCaptureResult为卡证识别返回的结果,onCanceled 表示用户取消,onFailure 表示识别失败,onDenied 表示相机不可用等场景 。