1.第一步我们先接入华为的仓库 maven {url 'http://developer.huawei.com/repo/'}
buildscript {
repositories {
google()
jcenter()
mavenCentral()
maven {url 'http://developer.huawei.com/repo/'}
}
dependencies {
classpath "com.android.tools.build:gradle:4.0.2"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
mavenCentral()
maven {url 'http://developer.huawei.com/repo/'}
}
}
第二步添加依赖
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清单文件的manifest里加入华为机器学习模型。以及读写权限和相机权限。
第四步在xml文件夹下设置身份证正面和反面两张图片用来点击扫描
第五步在Activity或Fragment里面进行实现
//身份证人像面点击事件
zheng.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//把身份证正面扫描赋值为true
b=true;
startCaptureActivity(idCallback, true, false);
}
});
//身份证国徽面点击事件
fan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//把身份证反面扫描赋值为false
b=false;
startCaptureActivity(idCallback, false, false);
}
});
//识别参数
private void startCaptureActivity(MLCnIcrCapture.CallBack callback, boolean isFront, boolean isRemote) {
MLCnIcrCaptureConfig config = new MLCnIcrCaptureConfig.Factory()
// 设置识别身份证的正反面。
.setFront(isFront)
// 设置是否使用云侧能力进行识别。
.setRemote(isRemote)
.create();
MLCnIcrCapture icrCapture = MLCnIcrCaptureFactory.getInstance().getIcrCapture(config);
icrCapture.capture(callback, this);
}
//成功回调
private MLCnIcrCapture.CallBack idCallback=new MLCnIcrCapture.CallBack() {
@Override
// 这个回调里面有参数可以点进去看看身份证图片就是Bitmap
public void onSuccess(MLCnIcrCaptureResult idCardResult) {
//这里toast一下看是否可以显示自己名字
Toast.makeText(Authenticationactivity.this,idCardResult.name+"", Toast.LENGTH_SHORT).show();
//这里判断为true就是人像面false就是国徽面
if (b==true){
//这个eques判断可以不看,因为我的项目接口性别是int类型所以判断。
if (idCardResult.sex.equals("女")){
sex=2;
}else {
sex=1;
}
//直接设置上
zheng.setImageBitmap(idCardResult.cardBitmap);
}else if (b==false){
//这个是国徽面,同上。
fan.setImageBitmap(idCardResult.cardBitmap);
}
// //点击上传身份证图片
// put.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View view) {
// Intent intent = new Intent(Authenticationactivity.this, AffirmActivity.class);
// intent.putExtra("actualName1",idCardResult.name);
// intent.putExtra("sex1",sex);
// intent.putExtra("birthday1",idCardResult.birthday);
// intent.putExtra("address1",idCardResult.address);
// intent.putExtra("idNumber1",idCardResult.idNum);
// intent.putExtra("office1",idCardResult.authority);
// intent.putExtra("expireDate1",idCardResult.validDate);
// startActivity(intent);
// }
// });
}
@Override
public void onCanceled() {
// 用户取消处理。
Toast.makeText(Authenticationactivity.this, "您已经取消认证", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int i, Bitmap bitmap) {
// 识别异常处理。
}
@Override
public void onDenied() {
// 相机不支持等场景处理。
}
};
以上就可以了



