在安卓系统上使用NFC技术的模拟M1卡的探索之路
先说下背景,公司的厂内物流系统,通过自助制卡,获取一张IC卡,该卡关联运输任务信息。然后司机携带这张IC卡去园区内进行装卸货。装卸货系统通过IC卡读取器,读取卡号,然后调用物流系统的接口,获取运输任务信息,如要装什么产品,装多少,再执行装车任务(通过管道灌注液体)。
即这张卡作为媒介,实现了装卸车系统与物流系统的交互,本来运行流畅,但由于疫情的原因,大货车司机是重点人群,风险较高,为了减少接触,要求装卸货过程中司机不要下车,由工作人员代为刷卡,这样虽然一定程度上降低了风险,但客观上仍然存在接触的环节,即工作人员需要跟司机来传递卡片。
为了降低风险,提出来免接触优化,想出来这么一种解决思路:将IC卡更换为二维码,在装卸车区域,直接通过二维码来传递数据。
该方案看上去很美好,但实际是受限的,即需要现场装车系统,能够识别二维码,不仅仅是涉及到软件的改造,还会涉及到硬件的改造,例如增加二维码读取的硬件设备,开发及部署程序,升级软件等,费用是一方面,最关键的是工期较长(现场有很多套不同年份实施的装车系统,早期设备与系统仅支持IC卡模式,不支持二维码的读取和处理)。
疫情形势严峻,该项目要求1个月内完成改造,而装卸车系统厂家评估改造硬件及升级需要3个月以上,因此二维码方式可作为一个未来的优化方案,近期则需要考虑一个临时过渡方案,即不做硬件系统升级和改造的情况下,如何来实现免接触?
有几个解决思路,但都存在一些限制和约束:
1.给现场配备制卡设备和应用,技术上不可行,主要在于物理IC卡卡号是唯一的,无法与进厂时制卡环节一致,需要软件改造进行,实现软关联,并影响到其他环节如门禁、过磅等。
2.装卸车现场配置几张物理卡,通过软件应用,根据车号定位运输任务,选取一张物理卡与之关联,技术上可行,但同样需要软件改造进行,并影响到其他环节如门禁、过磅等,同时,现场多张卡交替使用,容易发生混淆和混乱情况。
经过讨论,想出来一种新的思路,主要依托NFC技术实现,即给现场装卸车区域的工作人员配置安卓平板,在该平板上部署一个APP应用,通过车牌,查询到运输任务,然后将该平板模拟为一张IC卡,供现场装卸车系统来读取。
思路是有了,但技术实现这块遇到了重重问题,主要在于,没有了解NFC技术的人员,因此由我进行技术攻关。
首先了查阅了大量资料,发现大都讲的是如何进行NFC卡片的读写,这块在安卓开发的SDK包已经附带了,并测试可以正常运行,没有权限限制。
然后,如何将安卓平板模拟成一张IC卡,这块遇到了障碍,一方面,确实华为手机可以使用华为钱包的钥匙功能,创建一张空白卡,来复制小区门禁卡、员工卡等;另一方面,找不到API可用来干这件事。这两者看上去是矛盾的。
同时测试中发现,手机可以使用华为钱包的钥匙功能,创建空白卡速度非常慢,大概花费1分钟,会严重影响使用体验,并且同样不支持人为指定卡号。查看NFC的官方SDK,并未发现有创建虚拟卡的API,推测华为要么是覆写了NFC底层处理库,要么是自己又加了一层虚拟化来实现的,我们自己来实现类似功能或操作是不现实的。
通过阅读大量资料,深入了解NFC相关体系和运行机制,发现底层协议自身即约定了模拟卡号随机,未提供设置卡号的API函数,需通过进程注入(类黑客手段)或root操作系统后修改配置文件(影响机器维保)的非正常手段才能实现预期目的,弊端较多,不考虑采用该方案。
这条路走不通了,需要再调整下思路:
查找拷贝卡的实现方案,测试第三方工具,发现Mifare Classic Tool工具可实现读取A卡卡号、写入B卡卡号功能。其中A卡为当前物流系统使用的M1卡,B卡为支持卡号区域反复可擦写的CUID卡,经测试,可拷贝物流系统的实体卡片卡号至测试卡片,测试通过。
综合限制与约束,最佳临时实现方案如下:
装卸货现场使用安卓平板运行自开发应用,根据车号定位任务,获取到制卡环节的物理卡号,然后调用NFC写卡功能,将卡号写入到CUID卡中,使用该卡刷装卸车系统,即现场使用平板上自开发的app实现制备临时卡的功能,对其他业务环节无影响。
此外,可以在操作上进一步优化,即可以将一张CUID卡沾到平板的NFC区域,对于用户来说,基本等同于我们最开始的设想,即将平板模拟成一张NFC卡来刷装卸车系统。
在安卓系统上使用NFC技术的模拟M1卡的探索之路相关推荐
- 云技术在android平台上的应用程序,安卓系统上的ERP云应用
一.安卓系统介绍 Android手机通常在底部会有最多4个功能键: 返回键:返回前一操作屏幕: 菜单键:弹出当前屏幕相关选项菜单: 主屏键:回到待机主屏幕: 搜索键:进行搜索. 现在的触摸屏一般都是电 ...
- 谷歌为安卓系统加入Fast Pair技术 蓝牙耳机将实现设备自动切换
1月6日消息,据国外媒体报道,谷歌计划在接下来的几个月里加入"Fast Pair"蓝牙技术,增强安卓手机的蓝牙耳机功能.安卓系统将能在今年实现像AirPods一样的音频自动切换功能 ...
- 安卓虚拟机_安卓系统上的虚拟机
转载是一种动力 分享是一种美德 每日分享时刻- 提起在电脑里的虚拟机,相信许多小伙伴都有接触过,通过虚拟机我们可以在操作系统中虚拟出另一个操作系统,从而实现各种操作.那么,在手机里的虚拟机你有用过没? ...
- WebRTC 如何在安卓系统上采集音频数据
目录 步骤一.获取麦克风权限 步骤二.音频采集模块初始化 步骤三.启动音频采集流程 步骤四.音频预处理 我们都知道音视频通讯的前提是采集本地的音频和视频数据信息.今天,我们就来了解一下 WebRTC ...
- 将iPhone短信完整迁移到安卓系统上的方法
背景 家人想把信息从苹果6迁移到华为手机,应用很容易迁移,通讯录采用QQ同步助手同步,但是短信就是没办法迁移,他采用itools迁移短信,但是只能导入一条信息到华为手机,于是向我求助.我经过一些探索终 ...
- 短信从iphone迁移到android,将iPhone短信完整迁移到安卓系统上的方法
背景 家人想把信息从苹果6迁移到华为手机,应用很容易迁移,通讯录采用QQ同步助手同步,但是短信就是没办法迁移,他采用itools迁移短信,但是只能导入一条信息到华为手机,于是向我求助.我经过一些探索终 ...
- android怎么玩大头特效,安卓系统上抖音大头特效怎么弄?
安卓系统上抖音大头特效怎么弄?相信很多小伙伴都下载过抖音或者玩过抖音,小编之前刚下抖音的时候,一天刷短视频2个小时,感觉时间好快啊.不过,光看,自己不动手制作,好像缺了点什么?那本期小编就根据自己用安 ...
- m1卡读写c语言,Android NFC(一) M1卡读写
原料:Android 带NFC功能手机.M1卡 怕你们没耐心先上demo 1.在AndroidManifest中添加权限控制 activity中需要添加 android:resource=" ...
- android 正在上传动画,安卓系统上传文件动态显示进度条,进度条经常卡在99%有时也会卡住不显示完整的文字。...
使用var task = plus.uploader.createUpload上传文件时,添加上传状态监听事件 task.addEventListener("statechanged&quo ...
最新文章
- bzoj3211,bzoj3038
- C++ Builder技巧集锦
- ASP.NET 2.0 中改进的缓存功能
- PyTorch Tutorial
- vue 时区转换_vue---时间戳转换
- 只用一个marker 替换 高德_Android基于高德地图完全自定义Marker的实现方法
- linux ssh 查看vg,linux SSH证书登录
- 带你用Python玩转PPT
- vue element-ui只有一条信息时默认选中按钮,且不能取消,多条信息时可以手动选择
- bzoj 2751: [HAOI2012]容易题(easy)
- 一个JavaScript的小问题
- matlab fullbnt,Matlab2010下使用FULLBNT工具箱建立复杂的动态贝叶斯网络
- Word导出PDF后,PDF没有生成Word中对应的目录
- HDU 2154跳舞毯
- PG数据库内核分析学习笔记_XLOG日志恢复策略
- 计算几何之 旋转卡壳 代码模板与证明
- 【PYTHON】tkinter如何设置界面消失 当制作一个登陆界面时,登陆成功之后,如何让登陆界面本身消失...
- pyhton分类时画混淆矩阵
- 基因相关性(C语言)
- 计算机基础教学评价ppt,教学PPT课件:教学PPT的设计原理和评价标准
热门文章
- 修改Pycharm for Mac背景色为黑灰配色
- JointDNN: An Effificient Training and Inference Engine for Intelligent Mobile Cloud Computing Servic
- CSS实现反方向圆角
- vmware设置静态ip地址
- python的dict
- 如何将Python文件.py打包成.exe可执行程序(最简教程吗)
- 2021 上海科技大学 信息学院SIST 推免夏令营 经历
- ASP.NET增加微信公众号功能
- 自己想要什么 过什么样的生活
- 重装也无法修复此计算机,win10系统重置此电脑失败怎么解决