# DKCloudID_USB_Android **Repository Path**: lochy/DKCloudID_USB_Android ## Basic Information - **Project Name**: DKCloudID_USB_Android - **Description**: 德科物联云解码源码 配合DK26SE-ANT硬件通过USB HID接口连接到手机读取身份证明文信息,包括身份证号、姓名、头像...等信息。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://www.derkiot.com/ - **GVP Project**: No ## Statistics - **Stars**: 27 - **Forks**: 11 - **Created**: 2020-07-21 - **Last Updated**: 2025-02-17 ## Categories & Tags **Categories**: hardware **Tags**: NFC, 身份证, 云解码, 二代证云解码, Android ## README # DKCloudID_USB_Android #### 介绍 深圳市德科物联技术有限公司的USB身份证阅读器Demo, 支持DK26ME、DK26ME-ANT、DK200ZK等模块。更多产品信息请访问[德科官网](http://www.derkiot.com/)。 ### 如何集成到项目中 **Step 1. Add the JitPack repository to your build file** 打开根build.gradle文件,将maven { url 'https://jitpack.io' }添加到repositories的末尾 ``` allprojects { repositories { ... maven { url 'https://jitpack.io' } } } ``` **Step 2. 添加 implementation 'com.gitee.lochy:dkcloudid-usb-android-module:v2.1.0' 到dependency** ``` dependencies { implementation 'com.gitee.lochy:dkcloudid-usb-android-module:v2.1.0' } ``` **Step 3. 在AndroidManifest.xml中添加网络权限和USB访问权限** ``` ``` **Step 4. 初始化UsbNfcDevice初始化** ``` //usb_nfc设备初始化 if (usbNfcDevice == null) { usbNfcDevice = new UsbNfcDevice(MainActivity.this); usbNfcDevice.setCallBack(deviceManagerCallback); } ``` **Step 5. 添加读卡回调和读卡代码** ``` //设备操作类回调 private DeviceManagerCallback deviceManagerCallback = new DeviceManagerCallback() { @Override public void onReceiveConnectionStatus(boolean blnIsConnection) { if (blnIsConnection) { Log.i(TAG,"USB连接成功!"); logViewln(null); logViewln("USB连接成功!"); new Thread(new Runnable() { @Override public void run() { try { logViewln("USB设备已连接!"); byte versionsByts = usbNfcDevice.getDeviceVersions(); logViewln(String.format("设备版本:%02x", versionsByts)); try { usbNfcDevice.closeRf(); } catch (DeviceNoResponseException e) { e.printStackTrace(); } } catch (DeviceNoResponseException e) { e.printStackTrace(); } } }).start(); } else { Log.i(TAG,"USB连接断开!"); logViewln(null); logViewln("USB连接断开!"); } } @Override //寻到卡片回调 public void onReceiveRfnSearchCard(boolean blnIsSus, int cardType, byte[] bytCardSn, byte[] bytCarATS) { super.onReceiveRfnSearchCard(blnIsSus, cardType, bytCardSn, bytCarATS); if (!blnIsSus || cardType == UsbNfcDevice.CARD_TYPE_NO_DEFINE) { return; } Log.d(TAG, "Activity接收到激活卡片回调:UID->" + StringTool.byteHexToSting(bytCardSn) + " ATS->" + StringTool.byteHexToSting(bytCarATS)); final int cardTypeTemp = cardType; new Thread(new Runnable() { @Override public void run() { //普通IC卡读写示例 //readWriteCardDemo(cardTypeTemp); } }).start(); } //身份证开始请求云解析回调 @Override public void onReceiveSamVIdStart(byte[] initData) { super.onReceiveSamVIdStart(initData); Log.d(TAG, "开始解析"); logViewln(null); logViewln("正在读卡,请勿移动身份证!"); } //身份证云解析进度回调 @Override public void onReceiveSamVIdSchedule(int rate) { super.onReceiveSamVIdSchedule(rate); showReadWriteDialog("正在读取身份证信息,请不要移动身份证", rate); if (rate == 100) { time_end = System.currentTimeMillis(); /** * 这里已经完成读卡,可以拿开身份证了,在此提示用户读取成功或者打开蜂鸣器提示可以拿开身份证了 */ //myTTS.speak("读取成功"); } } //身份证云解析异常回调 @Override public void onReceiveSamVIdException(String msg) { super.onReceiveSamVIdException(msg); //显示错误信息 logViewln(msg); } //身份证云解析明文结果回调 @Override public void onReceiveIDCardData(IDCardData idCardData) { super.onReceiveIDCardData(idCardData); //显示身份证数据 showIDCardData(idCardData); } }; ```