这篇文章主要介绍“Android中如何识别二代身份证”,在日常操作中,相信很多人在Android中如何识别二代身份证问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android中如何识别二代身份证”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
开发前准备
android studio 安装
在项目级gradle里添加华为maven仓
打开AndroidStudio项目级build.gradle文件
增量添加如下maven地址:
buildscript {
repositories {
maven {url 'http://developer.huawei.com/repo/'}
}
}
allprojects {
repositories {
maven { url 'http://developer.huawei.com/repo/'}
}
}
在应用级的build.gradle里面加上SDK依赖
dependencies{
// 引入基础SDK
implementation 'com.huawei.hms:ml-computer-vision-icr:1.0.3.300'
// 引入身份证识别plugin包
implementation 'com.huawei.hms:ml-computer-card-icr-cn-plugin:1.0.3.315'
// 引入身份证识别模型包
implementation 'com.huawei.hms:ml-computer-card-icr-cn-model:1.0.3.315'
}
在AndroidManifest.xml文件里面增量添加模型自动下载
要使应用程序能够在用户从华为应用市场安装您的应用程序后,自动将最新的机器学习模型更新到用户设备,请将以下语句添加到该应用程序的AndroidManifest.xml文件中:
<manifest
...
<meta-data
android:name="com.huawei.hms.ml.DEPENDENCY"
android:value= "icr"/>
<!--If multiple models are required,set the parameter as follows:
android:value="object,ocr,face,label,icr,bcr,imgseg"-->
...
</manifest>
在AndroidManifest.xml文件里面申请相机、访问网络和存储权限
<!--相机权限-->
<uses-permission android:name="android.permission.CAMERA" />
<!--使用网络权限-->
<uses-permission android:name="android.permission.INTERNET" />
<!--写权限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--读权限-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
代码开发关键步骤
  在开发时可以通过三种方式进行集成开发,分别为:使用识别插件进行视频流身份证识别、设备侧身份证识别以及云侧身份证识别。在这里我们主要介绍使用识别插件进行视频流身份证识别的开发步骤,如果大家对另外两种集成方式感兴趣,可以参照华为开发者联盟开发步骤: https://developer.huawei.com/consumer/en/doc/development/HMS-Guides/ml-icr-dev-4
创建识别结果回调函数
识别结果回调函数,重载onSuccess, onCanceled, onFailure, onDenied四个方法;onSuccess 表示识别成功,MLCnIcrCaptureResult为识别返回结果,onCanceled 表示用户取消,onFailure 表示识别失败,onDenied 表示相机不可用等场景。
private MLCnIcrCapture.Callback idCallback = new MLCnIcrCapture.Callback() {
@Override
public void onSuccess(MLCnIcrCaptureResult idCardResult){
// 识别成功处理。
}
@Override
public void onCanceled(){
// 用户取消处理。
}
// 识别不到任何文字信息或识别过程发生系统异常的回调方法。
// retCode:错误码。
// bitmap:检测失败的身份证图片。
@Override
public void onFailure(int retCode, Bitmap bitmap){
// 识别异常处理。
}
@Override
public void onDenied(){
// 相机不支持等场景处理。
}
}
设置识别参数
设置识别参数,调用识别器capture接口进行识别,识别结果会通过步骤1的回调函数返回。
private void startCaptureActivity(MLCnIcrCapture.Callback callback, boolean isFront, boolean isRemote) {
MLCnIcrCaptureConfig config = new MLCnIcrCaptureConfig.Factory()
// 设置识别身份证的正反面。
// true:正面。
// false:反面。
.setFront(true)
// 设置是否使用云侧能力进行识别。
// true:云侧。
// false:端侧。
.setRemote(false)
.create();
MLCnIcrCapture icrCapture = MLCnIcrCaptureFactory.getInstance().getIcrCapture(config);
icrCapture.capture(callback, this);
}
实现身份识别
在检测按钮的回调中,调用步骤2中定义的方法,实现身份证识别。
@Override
public void onClick(View v) {
switch (v.getId()) {
// 识别正面按钮。
case R.id.IDCard_image_front:
startCaptureActivity(idCallback, true, false);
break;
// 识别背面按钮。
case R.id.IDCard_image_back:
startCaptureActivity(idCallBack, false, false);
break;
default:
break;
}
}
到此,关于“Android中如何识别二代身份证”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注天达云网站,小编会继续努力为大家带来更多实用的文章!