先说下背景,公司的厂内物流系统,通过自助制卡,获取一张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卡的探索之路相关推荐

  1. 云技术在android平台上的应用程序,安卓系统上的ERP云应用

    一.安卓系统介绍 Android手机通常在底部会有最多4个功能键: 返回键:返回前一操作屏幕: 菜单键:弹出当前屏幕相关选项菜单: 主屏键:回到待机主屏幕: 搜索键:进行搜索. 现在的触摸屏一般都是电 ...

  2. 谷歌为安卓系统加入Fast Pair技术 蓝牙耳机将实现设备自动切换

    1月6日消息,据国外媒体报道,谷歌计划在接下来的几个月里加入"Fast Pair"蓝牙技术,增强安卓手机的蓝牙耳机功能.安卓系统将能在今年实现像AirPods一样的音频自动切换功能 ...

  3. 安卓虚拟机_安卓系统上的虚拟机

    转载是一种动力 分享是一种美德 每日分享时刻- 提起在电脑里的虚拟机,相信许多小伙伴都有接触过,通过虚拟机我们可以在操作系统中虚拟出另一个操作系统,从而实现各种操作.那么,在手机里的虚拟机你有用过没? ...

  4. WebRTC 如何在安卓系统上采集音频数据

    目录 步骤一.获取麦克风权限 步骤二.音频采集模块初始化 步骤三.启动音频采集流程 步骤四.音频预处理 我们都知道音视频通讯的前提是采集本地的音频和视频数据信息.今天,我们就来了解一下 WebRTC ...

  5. 将iPhone短信完整迁移到安卓系统上的方法

    背景 家人想把信息从苹果6迁移到华为手机,应用很容易迁移,通讯录采用QQ同步助手同步,但是短信就是没办法迁移,他采用itools迁移短信,但是只能导入一条信息到华为手机,于是向我求助.我经过一些探索终 ...

  6. 短信从iphone迁移到android,将iPhone短信完整迁移到安卓系统上的方法

    背景 家人想把信息从苹果6迁移到华为手机,应用很容易迁移,通讯录采用QQ同步助手同步,但是短信就是没办法迁移,他采用itools迁移短信,但是只能导入一条信息到华为手机,于是向我求助.我经过一些探索终 ...

  7. android怎么玩大头特效,安卓系统上抖音大头特效怎么弄?

    安卓系统上抖音大头特效怎么弄?相信很多小伙伴都下载过抖音或者玩过抖音,小编之前刚下抖音的时候,一天刷短视频2个小时,感觉时间好快啊.不过,光看,自己不动手制作,好像缺了点什么?那本期小编就根据自己用安 ...

  8. m1卡读写c语言,Android NFC(一) M1卡读写

    原料:Android 带NFC功能手机.M1卡 怕你们没耐心先上demo 1.在AndroidManifest中添加权限控制 activity中需要添加 android:resource=" ...

  9. android 正在上传动画,安卓系统上传文件动态显示进度条,进度条经常卡在99%有时也会卡住不显示完整的文字。...

    使用var task = plus.uploader.createUpload上传文件时,添加上传状态监听事件 task.addEventListener("statechanged&quo ...

最新文章

  1. bzoj3211,bzoj3038
  2. C++ Builder技巧集锦
  3. ASP.NET 2.0 中改进的缓存功能
  4. PyTorch Tutorial
  5. vue 时区转换_vue---时间戳转换
  6. 只用一个marker 替换 高德_Android基于高德地图完全自定义Marker的实现方法
  7. linux ssh 查看vg,linux SSH证书登录
  8. 带你用Python玩转PPT
  9. vue element-ui只有一条信息时默认选中按钮,且不能取消,多条信息时可以手动选择
  10. bzoj 2751: [HAOI2012]容易题(easy)
  11. 一个JavaScript的小问题
  12. matlab fullbnt,Matlab2010下使用FULLBNT工具箱建立复杂的动态贝叶斯网络
  13. Word导出PDF后,PDF没有生成Word中对应的目录
  14. HDU 2154跳舞毯
  15. PG数据库内核分析学习笔记_XLOG日志恢复策略
  16. 计算几何之 旋转卡壳 代码模板与证明
  17. 【PYTHON】tkinter如何设置界面消失 当制作一个登陆界面时,登陆成功之后,如何让登陆界面本身消失...
  18. pyhton分类时画混淆矩阵
  19. 基因相关性(C语言)
  20. 计算机基础教学评价ppt,教学PPT课件:教学PPT的设计原理和评价标准

热门文章

  1. 修改Pycharm for Mac背景色为黑灰配色
  2. JointDNN: An Effificient Training and Inference Engine for Intelligent Mobile Cloud Computing Servic
  3. CSS实现反方向圆角
  4. vmware设置静态ip地址
  5. python的dict
  6. 如何将Python文件.py打包成.exe可执行程序(最简教程吗)
  7. 2021 上海科技大学 信息学院SIST 推免夏令营 经历
  8. ASP.NET增加微信公众号功能
  9. 自己想要什么 过什么样的生活
  10. 重装也无法修复此计算机,win10系统重置此电脑失败怎么解决