# ReadCardSDK **Repository Path**: unitang/read-card-sdk ## Basic Information - **Project Name**: ReadCardSDK - **Description**: 第二代居民身份证云解码SDK - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-05-29 - **Last Updated**: 2023-05-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 注意事项 > 初始化调用一次即可 > 测试使用的 appid 不可以用于商用(否则后果自负)。 商用的 appid 请务必联系我司商务进行分配。 # 添加aar依赖 - 添加读卡SDK maven仓库 ```java allprojects { repositories { google() jcenter() // 读卡SDK仓库 maven { url 'https://gitee.com/unitang/read-card-sdk/raw/master/Repositorys' } } } ``` - 依赖最新版本的读卡SDK ```java implementation "gitee.com.unitang:ReadCard:3.3.2" ``` # 1、读卡参数配置 ```java ReadSettingBuilder readSettingBuilder = ReadCardManager.Companion // 上下文 .builder(getBaseContext()) // 是否开启蜂鸣器 .buildOpenSound(true) // 是否开启日志,第二位参数为日志保存的目录, // 传空字符时,默认在 Android/data/包名/files/readcardlog 下 .buildOpenLog(true, "") // 测试使用的 appid 不可以用于商用(否则后果自负)。 // 商用的 appid 请务必联系我司商务进行分配。 .buildAppId("test") // 设置IP与端口号(传空字符和0时,默认使用内置地址) .buildIpAndPort("", 0) // 设置串口号、波特率(串口读卡时需要设置) .buildSerialPort("/dev/ttyS0", 115200) // 设置读卡类型(目前支持USB、NFC、SERIALPORT、SAM_USB、SAM_SERIALPORT) .buildReadCardType(ReadCardType.USB) // 照片解码类型(目前支持无照片、本地解码照片) .buildDecodeImageType(DecodeImageType.LOCAL_DECODE); ReadCardOutMethod readCardManager = readSettingBuilder.buildCreate(); ``` # 2、读卡初始化方法 ## 2.1 当选择的读卡类型是USB、NFC时,初始化方法如下: ```java readCardManager.readCardInit(code -> { if (code == StatusCode.ININ_OK.getCode()) { Log.e("mtj", "初始化成功"); } else { // 其他错误,对照错误码查看 Log.e("mtj", "初始化失败"); } }); ``` ## 2.2 当选择的读卡类型是串口时,初始化方法如下: ```java // 第一个参数:串口文件 // 第二个参数:波特率 readCardManager.readCardInit((new File("/dev/ttyS0"), 115200, code -> { if (code == StatusCode.ININ_OK.getCode()) { Log.e("mtj", "初始化成功"); } else { // 其他错误,对照错误码查看 Log.e("mtj", "初始化失败"); } }); ``` - 如果已经通过 buildSerialPort 设置了串口号和波特率,也可直接使用 2.1 的初始化方法 # 3、用户开启读卡 - NFC读卡类型时,开启读卡方法如下: ```java readCardManager.readCardStart(intent, listener); ``` - USB、SERIALPORT读卡类型时,开启读卡方法如下: ```java readCardManager.readCardStart(listener); ``` ## 方法参数说明 |参数名|必选|类型|说明| |:---- |:---|:----- |----- | |intent|是 |Intent|nfc系统回调实体类| |listener|是 |ReadCardListener| 方法回调| ## ReadCardListener回调说明 |方法名|参数|说明| |:----- |:-----|----- | | onReadIDCardSuccess(IdCardData)|IdCardData(身份证信息)|详见身份证信息表 | | onReadICCardSuccess(icNumber: String,type:int)|icNumber(卡号) type(卡片类型)|其他类型卡成功回调方法,详见卡类型表 | | onReadCardState(type: Int, msg: String)|type(状态码)msg(状态信息)|失败或其他状态回调,详见错误码表 | # 4、用户关闭读卡 ```java readCardManager.readCardStop(); ``` # 单独开关日志 ```java // 是否开启日志,第二位参数为日志保存的目录, // 传空字符时,默认在 Android/data/包名/files/zrgkreadcardlog 下 readSettingBuilder.buildOpenLog(false, ""); ``` # 获取设备信息 ```java readCardManager.readCardDeviceid(); ``` # 获取固件版本号 ```java readCardManager.readFirmwareVersion(); ``` ## 身份证详细信息IdCardData |字段|类型|注释| |:----- |:-----|----- | |address|string | 家庭住址 | |birthday|string | 出生日期 | |dn|string | dn码| |endDate|string | 身份证结束时间| |startDate|string | 身份证生效时间| |id|string | 身份证号码 | |image|ByteArray| 照片原始信息 | |issue|string | 签发机关| |name|string | 姓名| |nation|string | 民族| |sex|string | 性别| |uuid|string | uuid| |bitmap|Bitmap| 照片| ## 状态码对应表 ```java READCARD_SUCCESS(1000, "解码成功"), ININ_OK(1001, "初始化成功"), ININ_FAILE(1002, "初始化失败"), USB_NODEVICE_CODE(1003, "未发现读卡设备,请检查usb连接"), USB_NOREADCARD_CODE(1004, "没有检测到读卡设备"), USB_SYSYTEMREEOE_CODE(1005, "系统usb异常,请检查usb连接"), USB_NOINTERFACE_CODE(1006, "usb没有建立连接"), USB_NOCHANNLE_CODE(1007, "usb通道打开失败"), USB_NOSERVICE_CODE(1008, "没有usb服务"), SOCKET_SYS_CODE(1010, "网络通讯异常"), LOCAL_DATA_ERROR(1018, "本地通信失败"), UNKONW_ERROR(1020, "未知异常"), READCARD_START(1021, "解码开始"), READCARD_FAILE(1022, "解码失败"), READCARD_READING(1023, "解码中"), FIND_CARD_START(1024, "开始寻卡"), FIND_CARD_FAIL(1025, "寻卡失败"), FIND_CARD_SUCCESS(1026, "寻卡成功"), READ_UID_FAILE(1031, "UID异常"), SERIALPORT_NOINTERFACE_CODE(1036, "串口异常,请检查设备"), SERIALPORT_DATA_ERROR(1038, "串口异常"), ``` ## 其他卡类型 ```java CARD_IC(1040, "IC卡"), CARD_M1(1041, "M1卡"), CARD_LCT_STUDENT(1051, "绿城通学生卡"), CARD_LCT_NORMAL(1052, "绿城通普通卡"), CARD_LCT_OLD(1053, "绿城通老年卡"), CARD_SB(1060, "社保卡"), CARD_CMCC_SIM(1070, "中国移动超级SIM卡"), CARD_CUCC_SIM(1071, "中国联通超级SIM卡"), CARD_CTCC_SIM(1072, "中国电信超级SIM卡") ```