android使用精伦身份证读卡器读身份证
使用的设备是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使用精伦身份证读卡器读身份证相关推荐
- 精伦身份证阅读器php_精伦IDR210-1(免驱)身份证阅读器
产品概述 精伦IDR210-1身份证读卡器是一款多功能 .免装驱动程序的射频卡读写器,可根据需求配置不同部件实现不同射频卡的读取和写入功能. 精伦IDR210-1配置了专用身份证安全控制模块(SAM) ...
- 基于华视身份证读卡器读取身份证信息的Android demo
项目概述 本Demo需要华视的身份证读卡器,连接Android机器设备,当身份证读卡器读取到身份证信息后,立马展示出身份证信息数据.得到身份证的姓名.照片.出生年月等数据. 项目概述 本Demo需要华 ...
- 精伦iDR210读卡器驱动安装教程
身份证读卡器安装步骤 下载好身份证驱动(没有可以留言或者自行百度),然后解压好:步骤1:接入机具 接入身份证读卡器,若为首次安装,则会相继在电脑右下方弹出两个消息框,如图所示. 此时在设备管理器当中出 ...
- vue实现ZKT(中控)身份证读卡器读卡功能
第一次写,权当一个记录吧! 在当前的.vue文件中加上一个 <iframe v-show="false"><OBJECTclassid="CLSID:1 ...
- spring boot 启用定时任务调取精伦IDR210阅读软件获取身份证信息 jna dll
注:使用时确定jdk为32位 使用绝对路径读取接口时 需要确定接口文件存放位置 1.引入jna.jar <dependency><groupId>net.java.dev.j ...
- .net core 3.1精伦身份证读卡器IDR210-2(部标版)二次开发
业务需求 在学员录入的时候添加一个读取身份证填充对应信息的功能,但遇到如下问题: 官方提供的demo读取身份证使用了com组件和activeX控件的技术,并且只支持IE,我们的前端项目没有兼容IE 技 ...
- 精伦安全模块-身份证读卡器对接-Qt调用SDK
文章目录 精伦身份证读卡器 SDK qt调用测试读取身份证 库文件添加 编译器 测试代码 编译运行 精伦身份证读卡器 SDK 使用的是通用二次开发包V3.2的sdk Dewlt.dll JpgDll. ...
- jacob调用精伦身份证读卡器
最近接手一个任务,在nc人力资源模块通过精伦的身份证读卡器获取人员信息; 查阅了网上的资料,尝试了多种方式,最后采取了以下这种=调用读卡器dll 第一步: 在工程中导入 jna.jar 这个包. 第二 ...
- 东信EST-100系列身份证读卡器安卓开发包,Android Studio环境编译
东信EST-100系列身份证读卡器安卓开发包,以下为源代码 package com.example.sdkdemo;import android.app.Activity; import androi ...
最新文章
- Linux内核探讨-- 第四章
- Error:java: JDK isn't specified for module 'bvisioncloud'
- tensorflow2 目标检测_基于光流的视频目标检测系列文章解读
- 工作流实战_13_flowable 待办任务列表查询
- CF - 1214D
- 拓端tecdat|Python随机波动率(SV)模型对标普500指数时间序列波动性预测
- 基于WebRTC开源框架的实时视频聊天项目,搭建私人实时通信服务
- 物联网工程导论第二版答案选择题
- lisp成套电气设计_针对电气成套行业的专业设计仿真软件
- LC - P03 机器人大冒险
- 钉钉群机器人关键词自动回复_wetool自动接受新好友wetool pc版-客服
- “ 愿我如星君如月,夜夜流光相皎洁 ...”
- 收音机设计与制作漫谈——高频电路之最优化
- 超级鹰解决点触验证码
- 方舟 linux服务器设置,方舟生存进化私人服务器怎么设置 方舟手游私服设置教程...
- 伊利诺理工大学计算机专业,美国伊利诺伊理工大学世界排名_专业_申请条件-PSONE品思...
- 比赛比分html模板,HTML5 球赛比分牌
- 08 Confluent_Kafka权威指南 第八章:跨集群数据镜像
- 这种反爬虫手段有点意思,看我怎么把他秒破了
- 2014 -- ISO 面试题
热门文章
- Bandit算法与推荐系统
- 关于海关179公共的加签数据上报海关 的{code:20005,message:验签失败,total:0,serviceTime:} 解决办法
- Cesium加载ArcGIS的PBF矢量切片服务
- css文字右边加横线,CSS伪类before,after制作左右横线中间文字效果
- 导出微信群头像并将图片命名为[微信昵称.jpg]
- kubectl cp命令
- docker安装与重装
- PPT演示文稿放映时会议记录的技巧
- 唉 我的libgdx
- mini2440的LEDS驱动程序和测试程序详解