项目概述

本Demo需要华视的身份证读卡器,连接Android机器设备,当身份证读卡器读取到身份证信息后,立马展示出身份证信息数据。得到身份证的姓名、照片、出生年月等数据。

项目概述

本Demo需要华视的身份证读卡器,连接Android机器设备,当身份证读卡器读取到身份证信息后,立马展示出身份证信息数据。得到身份证的姓名、照片、出生年月等数据。
基于华视身份证读卡器读取身份证信息的Android demo_第1张图片

项目背景

本Demo需要华视的身份证读卡器,连接Android机器设备,当身份证读卡器读取到身份证信息后,立马展示出身份证信息数据。得到身份证的姓名、照片、出生年月等数据。

项目运行截图:

基于华视身份证读卡器读取身份证信息的Android demo_第2张图片

项目结构:

基于华视身份证读卡器读取身份证信息的Android demo_第3张图片

简单解释:

app module 依赖libraries 目录下的FaceVerifyModel和ReadIDCardModel。我们对身份证读卡的sdk做了简单的封装。我们无需理会读卡的具体过程,我可以再本片文章做简单的解释,以便你更快的理解我封装的sdk运行原理读卡原理。

关于sdk的封装代码简单解释:

要一直读卡,那么一定会有一个子线程while(true)一直读卡,直到程序停止,app退出,那么这个线程结束。我们要用一个线程控制。。

    private class AlwaysReadCardRunnable implements Runnable {        @Override        public void run() {            HSIDCardInfo icCardInfo;            while (isAutoReadCard) {                synchronized (hsOtgApi) {                    //读取成功阻塞3秒                    SystemClock.sleep(4 * 100);                    if (hsOtgApi.Authenticate(200, 200) != 1) {                        Log.i(TAG, "卡认证失败");                        //SystemClock.sleep(1 * 1000);                        SystemClock.sleep(1 * 1000);                    } else {                        icCardInfo = new HSIDCardInfo();                        ReadCardEvent cardEvent = new ReadCardEvent();                        if (hsOtgApi.ReadCard(icCardInfo, 200, 1300) == 1) {                            int ret = hsOtgApi.Unpack(filepath, icCardInfo.getwltdata());// 照片解码                            if (ret != 0) {                                Log.i(TAG, "unzip  success");                            }                            cardEvent.setCardInfo(icCardInfo);                            EventBus.getDefault().post(cardEvent);                            Log.i(TAG, "读卡成功");                            SystemClock.sleep(5 * 100);                        }                        else{                            Log.i(TAG, "读卡shibai");                        }                        //SystemClock.sleep(3 * 1000);                    }                }            }        }    }

Demo使用方法:

Activity的创建后初始化此sdk

 @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        new VerifyPresenter((VerifyContract.View) fragment, new VerifyModel());        IDCardSDK.getInstance().initSDK(getHandler(), this);    }

关于IdCardBean

public class IdCardBean {    private String name;    private String gender;    private String people;//民族;    private String from;//    private String address;    private String idNumber;    private String department;    private String endDate;    private String birthDay;//生日--------------

app项目中用 Eventbus 得到 身份证读卡信息。

    @Subscribe    public void onEventMainThread(ReadCardEvent readCardEvent) {            isStartMatch = true;            startMatchTime = System.currentTimeMillis();            Log.i(TAG, "检测成功,并且读取到身份证信息");            HSIDCardInfo cardInfo = readCardEvent.getCardInfo();            idCardBean = IdCardConvertUtils.converToIdCardBean(cardInfo);            mPresenter.getRealItemBeanByIdCard(idCardBean);            Log.i("lixiaodaoaaa", "file path is " + FileConstant.ID_CARD_HEAD_FILE_PATH);            Bitmap bitmapFromPath = FileUtils.getBitmapFromPath(FileConstant.ID_CARD_HEAD_FILE_PATH);            ivPeopleHead.setImageBitmap(bitmapFromPath);        }

关于 IdCardConvertUtils

这个是类型转化类,实现类的转化 读取身份证信息。

/*    ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓        Author   :  lixiaodaoaaa       Date     :  2019-08-11       Time     :  17:13    ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ */public class IdCardConvertUtils {    public static IdCardBean converToIdCardBean(HSIDCardInfo cardInfo) {        IdCardBean idCardBean = new IdCardBean();        if (null != cardInfo) {            String name = cardInfo.getPeopleName();            String gender = cardInfo.getSex();            String people = cardInfo.getPeople();            String birthDay = DateFormatterUtils.toBirthDay(cardInfo.getBirthDay());            String address = cardInfo.getAddr();            String cardNumber = cardInfo.getIDCard();            String department = cardInfo.getDepartment();            String endDate = cardInfo.getEndDate();            idCardBean.setName(name);            idCardBean.setGender(gender);            idCardBean.setPeople(people);            idCardBean.setBirthDay(birthDay);            idCardBean.setAddress(address);            idCardBean.setIdNumber(cardNumber);            idCardBean.setDepartment(department);            idCardBean.setEndDate(endDate);            return idCardBean;        }        return null;    }}

demo中概述

  1. 实现实时图像(人脸图像)
  2. 读取身份证信息。

Demo下载:联系v : lixiaodaoaaa

更多相关文章

  1. Android基于tess-two的离线身份证等图片文字识别
  2. Android 百度人脸识别、人脸采集、文字识别(身份证),人证对比
  3. Android 身份证号码查询、手机号码查询、天气查询
  4. Android拍照识别身份证SDK
  5. Android身份证件识别的OCR技术SDK
  6. Android tesseract-orc之扫描身份证号码
  7. Android(Java)正则表达式判断手机号、邮箱、身份证号码、密码、Url
  8. android查询软件(身份证号,号码归属等)源代码
  9. Android EditText身份证等类型

随机推荐

  1. 在PHP中通过GD库创建简单的图片(图文详解)
  2. 如何将curl获取到的json对象转成数组
  3. php如何修改数组的值?
  4. PHP在图片中用 imagettftext() 添加水印(
  5. 如何解决php中curl传递数据太慢
  6. php如何设置权限?
  7. php代码如何在html文件里面执行(详解)
  8. 如何解决php中curl_init()函数不可用
  9. php中如何进行小写转换?
  10. PHP以正则表达式验证手机号码