# 车管所考试入场项目 **Repository Path**: my_1622/VehicleProject ## Basic Information - **Project Name**: 车管所考试入场项目 - **Description**: android客户端,实现身份证刷证识别,人证核验,动态人脸验证,完成车管所考试入场项目的各类要求。 主板信号rk3288,身份证识别模组型号0513,安卓版本5.0+(低版本未测试)。 - **Primary Language**: Kotlin - **License**: Not specified - **Default Branch**: kotlin - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2020-04-29 - **Last Updated**: 2022-07-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 车管所考试签到分考位系统 #### 介绍 用于车管所科目一、二考试,考生通过人证核验,成功后可进入考试待考区域等候。系统验证考生信息后,快速自动分配考位、考车。根据大屏提示,考生可准确知道自己的考试信息,有序开考。 ##### 应用背景 先前,车管所考场分配依靠人工录入考生身份证信息,点击分配考位、考车,占用大量人力资源维护考场秩序,造成资源浪费,迫切需要一套自主分配考位、考车的系统,缓解警员压力。 #### 软件架构 软件架构说明 客户端分为几个部分: 人证核验、接口通讯、验证开闸机、以及更新人员信息后台服务几个部分。 #### 安装教程 1. 连接网络(互联网),用于初次启动时虹软验证。 2. 按照提示,安装apk(如果初始化报错,需要检查网络状态,返回到软件首页,手动激活虹软验证)。 3. 返回软件首页,点击设置,检查设置服务器地址及端口号,人脸及认证阀值(默认是0.85、0.65),更改第几号闸机, 1代表科目一第一道闸机,2代表科目一第二道闸机,3代表科目一第三道闸机(目前废用)、4代表科目二第一道闸机(目前废用)、5代表科目二第二道闸机,6代表科目二第三道闸机。 4. 断电重启。 #### 使用说明 1. 考生缴费完毕后,将脸完整置于摄像头的照射范围内,手持身份证刷证,进行人证核验。 2. 看到“请通行”的提示后,推闸进入。 3. 在待考区域等待大屏提示。 #### 用到的技术及遇到的问题 身份证识别:最初实现的是usb的身份证读卡设备,后来换成串口通讯的设备内嵌到安卓人证机内部。需要用到的技术包括串口通讯,身份证信息解析,身份证照片解码。 串口通讯本来是新建线程进行循环读取的,因为不稳定,改成了线程池,每隔一秒后,重启线程任务。身份证信息解析是网上通用的教材。照片解码采用了本地解码的方式。 接口通讯:使用自定义封装的网络架构,一行代码随时切换,目前用的OkGo的包,可以切换到volly或者其他,因为是第一次封装,所以花了一点时间,不过效果达到了预期,对单例、代理的设计模式也有了新的认识,刷新了知识体系。 闸机开闸:验证成功后,给一个信号开闸。 人员信息更新:使用开启服务的方式,因为考虑到公安系统的限制,根据之前项目的经验,推送方式行不通,后采用轮询方式,每隔2分钟调用接口,判断是否有人员信息需要下载, 后台下载工作人员和身份证消磁、临时身份证人员的信息,与前台通讯,更新本地人脸库,实现人员刷脸开闸。 原本需求是人证核验考生进入,后来新增的这个,所以调整了虹软的SDK,顺便升级到了虹软3.0的SDK,目前虹软3.0的SDK对人证和人脸同时需要比对的需求简化了集成步骤,这点好评。 #### 总结 1. 本项目是第二次用到串口通讯,回想第一次还是毕业后第一份工作的第一个项目,已经过了9年,感慨万千。 2. 网络框架是之前封装,一行代码切换网络框架,使用代理模式实现网络隔离库解耦,本次项目是第一次投入项目使用,做了很多调整和优化,达到了预期,比较满意。 3. 完整代码因为还在商用,所以并未上传,只上传了最初的搭建框架。