一: 将agconnect-services.json 拷贝到
打开项目级“settings.gradle”文件,配置HMS Core SDK的Maven仓地址
maven {url 'https://developer.huawei.com/repo/'}
二: 在项目的build.gradle中添加:
buildscript {
dependencies {
...
// 增加Android Gradle插件版本号配置,{version}为实际的Gradle插件版本号,例如7.1.1。
classpath 'com.android.tools.build:gradle:7.1.1'
// 增加AGC插件配置,请您参见AGC插件依赖关系选择合适的AGC插件版本。
classpath 'com.huawei.agconnect:agcp:1.9.1.301'
}
}
添加完后如下:
buildscript {
dependencies {
// 增加Android Gradle插件版本号配置,{version}为实际的Gradle插件版本号,例如7.1.1。
classpath 'com.android.tools.build:gradle:7.4.2'
// 增加AGC插件配置,请您参见AGC插件依赖关系选择合适的AGC插件版本。
classpath 'com.huawei.agconnect:agcp:1.9.1.301'
}
}
三:
在模块的build.gradle中添加:
apply plugin: 'com.huawei.agconnect'
添加后如下
plugins {
alias(libs.plugins.androidApplication)
}
apply plugin: 'com.huawei.agconnect'
四: 参考官网配置配置AndroidManifest.xml文件
<application ...
android:allowBackup="false" android:usesCleartextTraffic="true"
并添加依赖包:
implementation 'com.huawei.hms:nearby:6.12.1.300' implementation 'com.huawei.hms:scan:1.2.3.300'
// 引入基础SDK implementation 'com.huawei.hms:ml-computer-vision-ocr:3.11.0.301' // 引入拉丁语文字识别模型包 implementation 'com.huawei.hms:ml-computer-vision-ocr-latin-model:3.11.0.301' // 引入日韩语文字识别模型包 implementation 'com.huawei.hms:ml-computer-vision-ocr-jk-model:3.11.0.301' // 引入中英文文字识别模型包 implementation 'com.huawei.hms:ml-computer-vision-ocr-cn-model:3.11.0.301' // 引入身份证plugin与识别能力集合包。 implementation 'com.huawei.hms:ml-computer-card-icr-cn:3.7.0.303'
五: 身份证文字获取
Bitmap bitmap_card; MLTextAnalyzer analyzer;
MLLocalTextSetting setting = new MLLocalTextSetting.Factory() .setOCRMode(MLLocalTextSetting.OCR_DETECT_MODE) // 设置识别语种。 .setLanguage("zh") .create(); analyzer = MLAnalyzerFactory.getInstance().getLocalTextAnalyzer(setting);
private MLCnIcrCapture.CallBack idCallback = new MLCnIcrCapture.CallBack() { @Override public void onSuccess(MLCnIcrCaptureResult idCardResult){ // 识别成功处理。 String msg=""; msg+="地址:"+idCardResult.address; msg+="\n签发机关:"+idCardResult.authority; msg+="\n有效期限:"+idCardResult.validDate; msg+="\n性别:"+idCardResult.sex; msg+="\n出生日期:"+idCardResult.birthday; msg+="\n姓名:"+idCardResult.name; msg+="\n民族:"+idCardResult.nation; binding.textHome.setText(msg); } @Override public void onCanceled(){ // 用户取消处理。 } // 识别不到任何文字信息或识别过程发生系统异常的回调方法。 // retCode:错误码。 // bitmap:检测失败的身份证图片。 @Override public void onFailure(int retCode, Bitmap bitmap){ // 识别异常处理。 Log.d("身份证识别", "失败"); Toast.makeText(getContext(),"身份证识别失败",Toast.LENGTH_SHORT).show(); } @Override public void onDenied(){ // 相机不支持等场景处理。 } };
void click(){ MLCnIcrCaptureConfig config = new MLCnIcrCaptureConfig.Factory() // true:设置识别身份证的正面。 // false:设置识别身份证的反面。 .setFront(false) .create(); MLCnIcrCapture icrCapture = MLCnIcrCaptureFactory.getInstance().getIcrCapture(config); // bitmap为输入的Bitmap格式图片数据。 icrCapture.captureImage(bitmap_card, idCallback); }