使用的设备是iDR210

1.加上权限

<uses-feature android:name="android.hardware.usb.host" /><uses-permission android:name="android.hardware.usb.host" /><uses-permission android:name="android.hardware.usb.accessory" />

2.插上usb,读取设备

UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);// Get the list of attached devicesHashMap<String, UsbDevice> devices = manager.getDeviceList();Iterator<UsbDevice> deviceIterator = devices.values().iterator();int count = devices.size();if (count > 0) {while (deviceIterator.hasNext()) {UsbDevice device = deviceIterator.next();String devicename = device.getDeviceName();if (device.getProductId() == 33113 && device.getVendorId() == 1061) {if (!manager.hasPermission(device)) {manager.requestPermission(device, PendingIntent.getBroadcast(this, 0, new Intent(ACTION_REQUEST_USB_PERMISSION), 0));} else {connect(device);}}}}

3.获取usb设备权限

usbPermissionPi = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_REQUEST_USB_PERMISSION), PendingIntent.FLAG_CANCEL_CURRENT);usbIntentFilter = new IntentFilter();usbIntentFilter.addAction(ACTION_REQUEST_USB_PERMISSION);usbIntentFilter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);usbBroadcastReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();if (action == null)return;switch (action) {case ACTION_REQUEST_USB_PERMISSION: {if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) {try {UsbDevice device = (UsbDevice) intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);connect(device);return;} catch (Exception e) {e.printStackTrace();}}}}}};this.registerReceiver(usbBroadcastReceiver, usbIntentFilter);

4.连接设备

//打开设备UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);UsbDeviceConnection connection = manager.openDevice(device);UsbInterface mInterface = device.getInterface(0);connection.claimInterface(mInterface, true);

5.寻卡

//寻卡ByteBuffer buffer = ByteBuffer.allocate(64);buffer.put(PACKET1);byte[] data = buffer.array();ret = connection.controlTransfer(33, 9, 512, 0, data, data.length, 3000);Log.e("123", "寻卡发送=>" + printHexBinary(data));ret = connection.controlTransfer(161, 1, 256, 0, data, data.length, 3000);Log.e("123", "寻卡返回=>" + printHexBinary(data));

6.选卡

//选卡buffer = ByteBuffer.allocate(64);buffer.put(PACKET2);data = buffer.array();ret = connection.controlTransfer(33, 9, 512, 0, data, data.length, 3000);Log.e("123", "选卡发送=>" + printHexBinary(data));ret = connection.controlTransfer(161, 1, 256, 0, data, data.length, 3000);Log.e("123", "选卡返回=>" + printHexBinary(data));

7.读卡

 //读卡buffer = ByteBuffer.allocate(64);buffer.put(PACKET3);data = buffer.array();ret = connection.controlTransfer(33, 9, 512, 0, data, data.length, 3000);Log.e("123", "读卡发送=>" + printHexBinary(data));buffer = ByteBuffer.allocate(1344);ret = connection.controlTransfer(161, 1, 256, 0, data, data.length, 3000);Log.e("123", "读卡返回=>" + printHexBinary(data));buffer.put(data);while (ret > 0 && buffer.hasRemaining()) {ret = connection.controlTransfer(161, 1, 256, 0, data, data.length, 3000);Log.e("123", "读卡返回=>" + printHexBinary(data));buffer.put(data, 0, buffer.remaining() > data.length ? data.length : buffer.remaining());}data=buffer.array();Log.e("123", "读卡返回=>" + printHexBinary(data));

8.寻卡/选卡/读卡指令

 final static byte[] PACKET1 = new byte[]{(byte) 0xaa, (byte) 0xaa, (byte) 0xaa, (byte) 0x96, 0x69, 0x00, 0x03, 0x20, (byte) 0x01, (byte) 0x22};final static byte[] PACKET2 = new byte[]{(byte) 0xaa, (byte) 0xaa, (byte) 0xaa, (byte) 0x96, 0x69, 0x00, 0x03, 0x20, (byte) 0x02, (byte) 0x21};final static byte[] PACKET3 = new byte[]{(byte) 0xaa, (byte) 0xaa, (byte) 0xaa, (byte) 0x96, 0x69, 0x00, 0x03, 0x30, (byte) 0x01, (byte) 0x32};

9.最后获得的是身份证数据,怎么解析请看其他教程

android使用精伦身份证读卡器读身份证相关推荐

  1. 精伦身份证阅读器php_精伦IDR210-1(免驱)身份证阅读器

    产品概述 精伦IDR210-1身份证读卡器是一款多功能 .免装驱动程序的射频卡读写器,可根据需求配置不同部件实现不同射频卡的读取和写入功能. 精伦IDR210-1配置了专用身份证安全控制模块(SAM) ...

  2. 基于华视身份证读卡器读取身份证信息的Android demo

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

  3. 精伦iDR210读卡器驱动安装教程

    身份证读卡器安装步骤 下载好身份证驱动(没有可以留言或者自行百度),然后解压好:步骤1:接入机具 接入身份证读卡器,若为首次安装,则会相继在电脑右下方弹出两个消息框,如图所示. 此时在设备管理器当中出 ...

  4. vue实现ZKT(中控)身份证读卡器读卡功能

    第一次写,权当一个记录吧! 在当前的.vue文件中加上一个 <iframe v-show="false"><OBJECTclassid="CLSID:1 ...

  5. spring boot 启用定时任务调取精伦IDR210阅读软件获取身份证信息 jna dll

    注:使用时确定jdk为32位  使用绝对路径读取接口时 需要确定接口文件存放位置 1.引入jna.jar <dependency><groupId>net.java.dev.j ...

  6. .net core 3.1精伦身份证读卡器IDR210-2(部标版)二次开发

    业务需求 在学员录入的时候添加一个读取身份证填充对应信息的功能,但遇到如下问题: 官方提供的demo读取身份证使用了com组件和activeX控件的技术,并且只支持IE,我们的前端项目没有兼容IE 技 ...

  7. 精伦安全模块-身份证读卡器对接-Qt调用SDK

    文章目录 精伦身份证读卡器 SDK qt调用测试读取身份证 库文件添加 编译器 测试代码 编译运行 精伦身份证读卡器 SDK 使用的是通用二次开发包V3.2的sdk Dewlt.dll JpgDll. ...

  8. jacob调用精伦身份证读卡器

    最近接手一个任务,在nc人力资源模块通过精伦的身份证读卡器获取人员信息; 查阅了网上的资料,尝试了多种方式,最后采取了以下这种=调用读卡器dll 第一步: 在工程中导入 jna.jar 这个包. 第二 ...

  9. 东信EST-100系列身份证读卡器安卓开发包,Android Studio环境编译

    东信EST-100系列身份证读卡器安卓开发包,以下为源代码 package com.example.sdkdemo;import android.app.Activity; import androi ...

最新文章

  1. Linux内核探讨-- 第四章
  2. Error:java: JDK isn't specified for module 'bvisioncloud'
  3. tensorflow2 目标检测_基于光流的视频目标检测系列文章解读
  4. 工作流实战_13_flowable 待办任务列表查询
  5. CF - 1214D
  6. 拓端tecdat|Python随机波动率(SV)模型对标普500指数时间序列波动性预测
  7. 基于WebRTC开源框架的实时视频聊天项目,搭建私人实时通信服务
  8. 物联网工程导论第二版答案选择题
  9. lisp成套电气设计_针对电气成套行业的专业设计仿真软件
  10. LC - P03 机器人大冒险
  11. 钉钉群机器人关键词自动回复_wetool自动接受新好友wetool pc版-客服
  12. “ 愿我如星君如月,夜夜流光相皎洁 ...”
  13. 收音机设计与制作漫谈——高频电路之最优化
  14. 超级鹰解决点触验证码
  15. 方舟 linux服务器设置,方舟生存进化私人服务器怎么设置 方舟手游私服设置教程...
  16. 伊利诺理工大学计算机专业,美国伊利诺伊理工大学世界排名_专业_申请条件-PSONE品思...
  17. 比赛比分html模板,HTML5 球赛比分牌
  18. 08 Confluent_Kafka权威指南 第八章:跨集群数据镜像
  19. 这种反爬虫手段有点意思,看我怎么把他秒破了
  20. 2014 -- ISO 面试题

热门文章

  1. Bandit算法与推荐系统
  2. 关于海关179公共的加签数据上报海关 的{code:20005,message:验签失败,total:0,serviceTime:} 解决办法
  3. Cesium加载ArcGIS的PBF矢量切片服务
  4. css文字右边加横线,CSS伪类before,after制作左右横线中间文字效果
  5. 导出微信群头像并将图片命名为[微信昵称.jpg]
  6. kubectl cp命令
  7. docker安装与重装
  8. PPT演示文稿放映时会议记录的技巧
  9. 唉 我的libgdx
  10. mini2440的LEDS驱动程序和测试程序详解