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里加入华为机器学习模型。以及读写权限和相机权限。

   <meta-dataandroid:name="com.huawei.hms.ml.DEPENDENCY"android:value= "icr"/>

<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" />

第四步在xml文件夹下设置身份证正面和反面两张图片用来点击扫描

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:textSize="@dimen/dp_20"android:textColor="#000"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="实名认证"android:layout_gravity="center"/><ImageViewandroid:layout_gravity="center"android:id="@+id/zheng"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/id_card_on"/><ImageViewandroid:layout_gravity="center"android:id="@+id/fan"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/id_card_under"/><Buttonandroid:id="@+id/put"android:background="#FE657A"android:text="上传"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"/></LinearLayout>

第五步在Activity或Fragment里面进行实现

//身份证人像面点击事件zheng.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {//把身份证正面扫描赋值为trueb=true;startCaptureActivity(idCallback, true, false);}});//身份证国徽面点击事件fan.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {//把身份证反面扫描赋值为falseb=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//  这个回调里面有参数可以点进去看看身份证图片就是Bitmappublic 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);
//                }
//            });}@Overridepublic void onCanceled() {// 用户取消处理。Toast.makeText(Authenticationactivity.this, "您已经取消认证", Toast.LENGTH_SHORT).show();}@Overridepublic void onFailure(int i, Bitmap bitmap) {// 识别异常处理。}@Overridepublic void onDenied() {// 相机不支持等场景处理。}};

以上就可以了

Android身份证扫描相关推荐

  1. Android身份证扫描拍照识别SDK

    Android身份证扫描拍照识别SDK 移动互联网是大趋势? 随着智能手机的硬件不断优化,移动互联网及应用大范围普及,互联网+各行各业,跨界.融合.创新,市场瞬息万变,有野心的企业和人.技术都在拼命的 ...

  2. Android 身份证扫描

    参考项目:https://github.com/czmc/zxingcard 使用的是腾讯的优图,地址:https://open.youtu.qq.com/ 使用此项目请先申请优图appid等字段 / ...

  3. OCR--苹果ios安卓android身份证拍照扫描识别sdk

    一.ios安卓android身份证拍照扫描识别sdk应用背景 这些年,随着移动互联网的的发展,越来越多的企业都推出了自己的移动APP,这些APP多数都涉及到个人身份证信息的输入认证(即实名认证),如果 ...

  4. Android拍照扫描识别身份证信息SDK

    Android拍照扫描识别身份证信息SDK 移动互联网是大趋势? 随着智能手机的硬件不断优化,移动互联网及应用大范围普及,互联网+各行各业,跨界.融合.创新,市场瞬息万变,有野心的企业和人.技术都在拼 ...

  5. Android手机扫描识别银行卡技术

    Android手机扫描识别银行卡技术 1.Android手机扫描识别银行卡技术背景分析 手机支付.网络支付已经非常成熟,消费者已经习惯了使用手机支付宝进行支付,用手机银行进行消费和转账.但是,整个线上 ...

  6. Camera详解(附身份证扫描示例)

    Camera是什么 Camera官方说明The Camera class is used toset image capture settings, start/stop preview, snap ...

  7. 身份证扫描识别OCR技术的应用场景

    关键词:身份证扫描识别,证件识别,身份证识别,二代身份证识别,手机移动端证件识别 目前来讲:智能OCR识别技术有关于身份证扫描识别OCR技术的服务主要有两种部署模式:身份证扫描识别OCR技术和云端/服 ...

  8. 原生APP集成身份证扫描拍照识别SDK

    原生APP集成身份证扫描拍照识别SDK 移动互联网是大趋势? 随着智能手机的硬件不断优化,移动互联网及应用大范围普及,互联网+各行各业,跨界.融合.创新,市场瞬息万变,有野心的企业和人.技术都在拼命的 ...

  9. 移动端二代身份证扫描识

     一.移动端二代身份证扫描识别应用背景 这些年,随着移动互联网的的发展,越来越多的企业都推出了自己的移动APP,这些APP多数都涉及到个人身份证信息的输入认证(即实名认证),如果手动去输入身份证号码和 ...

  10. 身份证扫描识别ocr技术

     一.身份证扫描OCR识别技术应用背景 这些年,随着移动互联网的的发展,越来越多的企业都推出了自己的移动APP,这些APP多数都涉及到个人身份证信息的输入认证(即实名认证),如果手动去输入身份证号码和 ...

最新文章

  1. ibatis轻松入门
  2. JavaScript的undefined
  3. c++ array方法
  4. 2019-03-5-算法-进化(最长公共前缀)
  5. PLSQL 安装+配置( Oracle数据库连接工具 )
  6. python预定义_【Python】python类中方法的预定义
  7. codeforces 675E E. Trains and Statistic(线段树+dp)
  8. JS删除数组里的某一个元素
  9. 架构中的技术性解决难题之解决篇
  10. 爸爸和儿子的故事带你理解java线程
  11. sfidsk创建可启动分区问题
  12. Assetbundle coustomerScripts
  13. VS2017_Reshaper
  14. 转行3D建模,C4D与3ds Max哪个更好入门就业
  15. PUN☀️二、局域网的搭建
  16. java中小数位数的限制,Java中限制小数位数有关问题
  17. 计算机应用后期影音制作,影音制作工具(ImTOO Movie Maker)
  18. 【房间墙上凿个洞,看你在干嘛~】安全攻防内网渗透-绕过防火墙和安全检测,搭建DNS隐蔽隧道
  19. php使用最新qq企业邮箱smtp服务发送邮件需要开启ssl、开启客户端专用密码
  20. 流式布局FlowLayout使用

热门文章

  1. 实战一个项目后,谈谈 Rust 语言的优点和缺点
  2. 这么多2B项目管理软件,怎么选?
  3. 37.WLAN Qos介绍
  4. html页面内容不可复制粘贴,教你如何解决网页不能复制粘贴的问题
  5. FileInputStream.read()返回int类型原因
  6. 洛谷P3533 [POI2012]RAN-Rendezvous
  7. 按计算机应用领域分类,按计算机用途分类
  8. 蓝桥杯B组 杨辉三角
  9. word文档打不开、损坏了怎么修复
  10. java中jdk1.8的hashmap为啥要用尾插法,不用头插入。