栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android身份证扫描

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android身份证扫描

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() {
            // 相机不支持等场景处理。
        }
    };

以上就可以了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1035134.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号