CN104915696B - 一种基于Android平台的NFC读写方法 - Google Patents

一种基于Android平台的NFC读写方法 Download PDF

Info

Publication number
CN104915696B
CN104915696B CN201510390416.3A CN201510390416A CN104915696B CN 104915696 B CN104915696 B CN 104915696B CN 201510390416 A CN201510390416 A CN 201510390416A CN 104915696 B CN104915696 B CN 104915696B
Authority
CN
China
Prior art keywords
nfc
data
write
card
activity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510390416.3A
Other languages
English (en)
Other versions
CN104915696A (zh
Inventor
张贵军
龚伟奇
陈铭
王宇凯
姚俊
贺智远
周晓根
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University of Technology ZJUT
Original Assignee
Zhejiang University of Technology ZJUT
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang University of Technology ZJUT filed Critical Zhejiang University of Technology ZJUT
Priority to CN201510390416.3A priority Critical patent/CN104915696B/zh
Publication of CN104915696A publication Critical patent/CN104915696A/zh
Application granted granted Critical
Publication of CN104915696B publication Critical patent/CN104915696B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)
  • Telephonic Communication Services (AREA)

Abstract

一种基于Android平台的NFC读写方法,首先利用美国标准信息交换代码表,将写入的16进制数据转为可识别的数据,方便对写入数据的读取,以便查看;在写入数据方面,加入了对中文的支持,并消除了对写入数据长度的限制,利用数组元素复制方法对数据的byte型进行处理,对长度不足16位的补0,长度超过16位了的自动转行并写入到下一个块,同时跳过扇区的尾块,且可以自动转到下一个扇区,因此可以写入小于NFC卡片内存的任意长度的数据。本发明提供了一种读取方便,写入自由度高,对卡片内存零破坏的NFC卡片读取方法。

Description

一种基于Android平台的NFC读写方法
技术领域
本发明涉及外部数据处理、计算机应用领域,尤其涉及的是一种基于Android平台的NFC读写方法。
背景技术
近年来,随着网络和通信技术的快速发展,智能手机在人们的生活中占据着越来越重要的位置,据美国市场研究公司IDC统计报告称,2014年全球手机出货量达到11.67亿部,比2013年同比增长了25.9%,同时搭载Android操作系统的智能手机在其中的比例已达到了75%,稳居智能手机出货量第一名。NFC(Near Filed Communication)近场通信技术是由非接触式射频识别(RFID)及互联互通技术整合演变而来,在单一芯片上结合感应式读卡器、感应式卡片和点对点的功能,能在短距离内与兼容设备进行识别和数据交换。NFC根据应用的不同可采用三种不同的工作模式:读写模式(也称读卡器模式、读写模式)、P2P(点对点)模式、卡模拟模式(也称支付模式)。在移动通信领域,人们可以在有NFC功能的Android智能手机上进行智能海报阅读,移动支付,门禁控制等操作,在旅游社交领域,博物馆可以使用NFC技术为游客提供服务,游客可以通过智能手机访问展品信息,同时还可以进行交流互动,发展前景广阔。
而在NFC的读取方面,市面上的NFC读写软件在读取方面存在着如下缺陷:由于写入的数据以16进制的形式保存,读取的时候不能很好的识别;或者在写入数据方面不能写入中文和对写入数据的长度有限制(必须为16位),写入数据时可能会写到NFC卡片的保护块,而导致卡片的扇区出现死区而损坏,不方便写入。
因此,在NFC的读写方面存在不足,需要改进。
发明内容
为了克服现有的NFC读写方法存在着读取识别不方便,对写入数据的要求苛刻(数据内容必须为16位,且不能为中文)的不足,本发明提供一种读取方便,写入自由度高,对NFC卡片内存零破坏的基于Android平台的NFC读写方法。
本发明解决其技术问题所采用的技术方案是:
一种基于Android平台的NFC读写方法,所述的读写方法包括以下步骤:
1)打开本应用程序,判断设备状态:
1.1)先检测设备支持NFC功能与否,若不支持则弹出提示框,退出应用程序;
1.2)若设备支持该功能但未开启NFC功能,则出现提示框,提醒开启设备的NFC功能,开启后进行下一步;
2)将标签靠近设备背面,等待程序读取;
3)NFC卡片的读操作:当有标签靠近时,应用程序会提示发现一个NFC卡片信息,则启动Android标准配置文件中过滤器找到定义好的应用程序主活动Activity,用户可以在活动中执行需要的操作;
4)NFC数据格式信息的获得:通过从主活动Activity中的意图过滤器获取卡片信息,并将其保存在数据格式信息类中;
5)NFC数据格式信息的解析:通过获得的信息进行数据格式转化解析,从而得到卡片中写入的真实内容,即之前写入的数据;
6)NFC卡片的写操作:当NFC应用程序发现一个NFC卡片时,会启动Android标准配置文件中定义好的对应主活动Activity,执行Activity中的写操作:
6.1)获取卡片的对内存操作指令,并连接;
6.2)在写入数据的过程中,设定好写入的块,防止写入扇区的尾块中而导致扇区出现死区的现象;
6.3)将写入的数据转为byte型,并判断写入数据的大小,如果超出范围,提示写入数据超过内存,并返回,否则继续下一步;
6.4)获取写入扇区的独立密码;
6.5)判断写入数据的byte型长度,小于16byte的补0,大于16byte但小于48byte的自动转为存储与本扇区的其他块,大于48byte的,转到步骤6.3)获取下一个扇区的密码,再重复步骤6.4),直至存储结束;
6.6)关闭卡片对内存操作的指令连接;
7)读取存储的16进制数据内容:对写入存储的数据利用ASCII码扩展表进行转换,还原存储数据的内容。
进一步,步骤3)中发现卡片和卡片的分发系统包括以下步骤:
3.1)如果目标NFC卡片包含了系统支持的NDEF(NFC Data Exchange Formate)消息,即NFC数据转换格式消息,则NFC系统模块将直接把此NDEF消息分发给感兴趣的Activity活动类,如果有目标Activity,则直接分发给此活动类,否则继续下一步;
3.2)如果目标NFC卡片包含了系统不支持的NDEF消息,或者3.1)中没有目标Activity,则NFC系统模块将尝试分发一个ACTION_TECH_DISCOVERED发现支持类型的通知;NFC系统模块在分发此通知时,将首先分析目标卡片所支持的使用技术,然后寻找注册了支持这些卡片技术的目标活动Activity,并将意图Intent分发给Activity;如果没有合适的目标Activity,则转入下一步;
3.3)NFC系统模块将分发ACTION_TAG_DISCOVERED通知给注册了该通知的感兴趣目标活动Activity。
再进一步,步骤4)中的获取卡片信息的读取方法为:先获得卡片对内存的操作指令,然后再获取每个内存扇区的密码,找到要读取数据的块,再将内存中的16进制数据每2位或者4位进行美国标准交换信息码扩展码转换,从而识别中文内容,最后关闭对内存的操作指令,完成整个读取过程。
本发明的技术构思为:对NFC卡片的内容读取方法进行了改进,利用ASCII(美国标准信息交换代码)码扩展表,使其读取内容支持的范围变大;在写入前,首先判断卡片的内存大小,然后获取扇区和块等信息,并获取每个扇区的密码;写入数据时,将写入数据转换为byte型,对不足16位的长度或者超过16位的byte型数据,利用数组元素复制的方法对数据进行分割和补充,消除对写入数据的苛刻要求的影响,使得写入数据更加自由简单;同时,在判断卡片信息时,能够识别卡片的尾块,从而在写入数据时,避免写入尾块而导致卡片出现死区而损坏。
本发明的有益效果为:不仅写入自由度高,而且对NFC卡片内存零破坏。
附图说明:
图1是读取写入数据前的界面。
图2是读取写入数据后的界面。
图3是转换为ASCII码的界面。
具体实施方式
下面结合附图对本发明作进一步描述。
参照图1~图3,一种基于Android平台的NFC读写方法,包括以下步骤:
1)打开本应用程序,判断设备状态:
1.1)先检测设备支持NFC功能与否,若不支持则弹出提示框,退出应用程序;
1.2)若设备支持该功能但未开启NFC功能,则出现提示框,提醒开启设备的NFC功能,开启后进行下一步;
2)将标签靠近设备背面,等待程序读取;
3)NFC卡片的读操作:当有标签靠近时,应用程序会提示发现一个NFC卡片信息,则启动Android标准配置文件中过滤器找到定义好的应用程序主活动Activity,用户可以在活动中执行需要的操作;
4)NFC数据格式信息的获得:通过从主活动Activity中的意图过滤器获取卡片信息,并将其保存在数据格式信息类中;
5)NFC数据格式信息的解析:通过获得的信息进行数据格式转化解析,从而得到卡片中写入的真实内容,即之前写入的数据;
6)NFC卡片的写操作:当NFC应用程序发现一个NFC卡片时,会启动Android标准配置文件中定义好的对应主活动Activity,执行Activity中的写操作:
6.1)获取卡片的对内存操作指令,并连接;
6.2)在写入数据的过程中,设定好写入的块,防止写入扇区的尾块中而导致扇区出现死区现象;
6.3)将写入的数据转为byte型,并判断写入数据的大小,如果超出范围,提示写入数据超过内存,并返回,否则继续下一步;
6.4)获取写入扇区的独立密码;
6.5)判断写入数据的byte型的长度,小于16byte的补0,大于16byte但小于48byte的自动转为存储与本扇区的其他块,大于48byte的,转到步骤6.3)获取下一个扇区的密码,再重复步骤6.4),直至存储结束;
6.6)关闭卡片对内存操作的指令连接;
7)读取存储的16进制数据内容:对写入存储的数据利用ASCII码扩展表进行转换,还原存储数据的内容,如图3所示。
进一步,步骤3)中发现卡片和卡片的分发系统包括以下步骤:
3.1)如果目标NFC卡片包含了系统支持的NDEF(NFC Data Exchange Formate)消息,即NFC数据转换格式消息,则NFC系统模块将直接把此NDEF消息分发给感兴趣的Activity活动类,如果有目标Activity,则直接分发给此活动类,否则继续下一步;
3.2)如果目标NFC卡片包含了系统不支持的NDEF消息,或者3.1)中没有目标Activity,则NFC系统模块将尝试分发一个ACTION_TECH_DISCOVERED发现支持类型的通知;NFC系统模块在分发此通知时,将首先分析目标卡片所支持的使用技术,然后寻找注册了支持这些卡片技术的目标活动Activity,并将意图Intent分发给Activity;如果没有合适的目标Activity,则转入下一步;
3.3)NFC系统模块将分发ACTION_TAG_DISCOVERED通知给注册了该通知的感兴趣目标活动Activity。
再进一步,步骤4)中的获取卡片信息的读取方法为:先获得卡片对内存的操作指令,然后再获取每个内存扇区的密码,找到要读取数据的块,再将内存中的16进制数据每2位或者4位进行美国标准交换信息码扩展码转换,从而识别中文内容,最后关闭对内存的操作指令,完成整个读取过程。
本实施例以常见的M1(Mifare Classic 1K)卡片为实施例,一种基于Android平台的NFC读写方法,其中包括以下步骤:
1)打开本应用程序,判断设备状态:
1.1)先检测设备支持NFC功能与否,若不支持则弹出提示框,退出应用程序;
1.2)若设备支持该功能但未开启NFC功能,则出现提示框,提醒开启设备的NFC功能,开启后进行下一步;
2)将标签靠近设备背面,等待程序读取;
3)NFC卡片的读操作:当有标签靠近时,应用程序会提示发现一个NFC卡片信息,则启动Android标准配置文件中过滤器找到定义好的应用程序主活动Activity,用户可以在活动中执行需要的操作;
4)NFC数据格式信息的获得:通过从主活动Activity中的意图过滤器获取卡片信息,并将其保存在数据格式信息类中;
5)NFC数据格式信息的解析:通过获得的信息进行数据格式转化解析,从而得到卡片中写入的真实内容,即之前写入的数据;
6)NFC卡片的写操作:当NFC应用程序发现一个NFC卡片时,会启动Android标准配置文件中定义好的对应主活动Activity,执行Activity中的写操作:
6.1)获取卡片的对内存操作指令,并连接;
6.2)在写入数据的过程中,设定好写入的块,防止写入扇区的尾块中而导致扇区出现死区现象;
6.3)将写入的数据转为byte型,并判断写入数据的大小,如果超出范围,提示写入数据超过内存,并返回,否则继续下一步;
6.4)获取写入扇区的独立密码;
6.5)判断写入数据的byte型的长度,小于16byte的补0,大于16byte但小于48byte的自动转为存储与本扇区的其他块,大于48byte的,转到步骤6.3)获取下一个扇区的密码,再重复步骤6.4),直至存储结束;
6.6)关闭卡片对内存操作的指令连接;
7)读取存储的16进制数据内容:对写入存储的数据利用ASCII码扩展表进行转换,还原存储数据的内容,结果如图3所示。
以常见的M1(Mifare Classic 1K)卡片为例,运用以上方法,完成了NFC的读写过程,其中写入数据前如图1所示,写入数据后读取存储界面如图2所示。
以上阐述的是本发明给出的一个实施例表现出来的优良效果,显然本发明不仅适合上述实施例,在不偏离本发明基本精神及不超出本发明实质内容所涉及内容的前提下可对其做种种变化加以实施。

Claims (3)

1.一种基于Android平台的NFC读写方法,所述方法包括以下步骤:
1)打开本应用程序,判断设备状态,过程如下:
1.1)先检测设备支持NFC功能与否,若不支持则弹出提示框,退出应用程序;
1.2)若设备支持该功能但未开启NFC功能,则出现提示框,提醒开启设备的NFC功能,开启后进行下一步;
2)将标签靠近设备背面,等待程序读取;
3)NFC卡片的读操作:当有标签靠近时,应用程序发现一个NFC卡片信息,它会启动Android标准配置文件中过滤器找到定义好的应用程序主活动Activity,用户可以在活动中执行事务操作;
4)NFC数据格式信息的获得:通过从主活动Activity中的意图过滤器获取卡片信息,并将其保存在数据格式信息类中;
5)NFC数据格式信息的解析:通过获得的信息进行数据格式转化解析从而得到卡片中写入的真实内容,即先前写入的数据;
6)NFC卡片的写操作:当NFC应用程序发现一个NFC卡片时,会启动Android标准配置文件中定义好的对应主活动Activity,执行Activity中的写操作:
6.1)获取卡片的对内存操作指令,并连接;
6.2)在写入数据的过程中,设定好写入的块,防止写入扇区的尾块中而导致扇区出现死区现象;
6.3)将写入的数据转为byte型,并判断写入数据的大小,如果超出范围,提示写入数据超过内存,并返回,否则继续下一步;
6.4)获取写入扇区的独立密码;
6.5)判断写入数据的byte型的总长度,小于16byte的补0,存储于本扇区的一个块;大于16byte但小于48byte的存储于本扇区的其他块,大于48byte的,转到步骤6.3)获取下一个扇区的密码,再重复步骤6.4),直至存储结束;
6.6)关闭卡片的对内存操作指令的连接;
7)读取存储的16进制数据内容,对写入存储的数据进行ASCII码扩展码转换,还原存储数据的内容。
2.如权利要求1所述一种基于Android平台的NFC读写方法,所述方法特征在于:步骤3)中发现卡片和卡片的分发系统包括以下步骤:
3.1)如果目标NFC卡片包含了系统支持的NDEF(NFC Data ExchangeFormate)消息,即NFC数据转换格式消息,则NFC系统模块将直接把此NDEF消息分发给感兴趣的Activity活动类,如果有目标Activity,则直接分发给此活动类,否则继续下一步;
3.2)如果目标NFC卡片包含了系统不支持的NDEF消息,或者3.1)中没有目标Activity,则NFC系统模块将尝试分发一个ACTION_TECH_DISCOVERED发现支持类型的通知;NFC系统模块在分发此通知时,将首先分析目标卡片所支持的使用技术,然后寻找注册了支持这些卡片技术的目标活动Activity,并将意图Intent分发给Activity;如果没有合适的目标Activity,则转入下一步;
3.3)NFC系统模块将分发ACTION_TAG_DISCOVERED通知给注册了该通知的感兴趣目标活动Activity。
3.如权利要求1或2所述一种基于Android平台的NFC读写方法,所述方法特征在于:步骤4)中的获取卡片信息的读取方法为:先获得卡片对内存的操作指令,然后再获取每个内存扇区的密码,找到要读取数据的块,再将内存中的16进制数据每2位或者4位进行美国标准交换信息码扩展码转换,从而识别中文内容,最后关闭对内存的操作指令,完成整个读取过程。
CN201510390416.3A 2015-07-01 2015-07-01 一种基于Android平台的NFC读写方法 Active CN104915696B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510390416.3A CN104915696B (zh) 2015-07-01 2015-07-01 一种基于Android平台的NFC读写方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510390416.3A CN104915696B (zh) 2015-07-01 2015-07-01 一种基于Android平台的NFC读写方法

Publications (2)

Publication Number Publication Date
CN104915696A CN104915696A (zh) 2015-09-16
CN104915696B true CN104915696B (zh) 2017-10-27

Family

ID=54084744

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510390416.3A Active CN104915696B (zh) 2015-07-01 2015-07-01 一种基于Android平台的NFC读写方法

Country Status (1)

Country Link
CN (1) CN104915696B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3522023A1 (fr) * 2018-02-02 2019-08-07 STMicroelectronics (Grenoble 2) SAS Architecture de mémoire d'un dispositif de communication en champ proche

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017167274A1 (zh) * 2016-04-01 2017-10-05 珠海艾派克微电子有限公司 Nfc标签
CN106067049A (zh) * 2016-07-29 2016-11-02 东信和平科技股份有限公司 一种基于nfc技术的安卓客户端读卡方法
CN106302880A (zh) * 2016-08-24 2017-01-04 Tcl移动通信科技(宁波)有限公司 一种移动终端的nfc天线及移动终端
CN109272079A (zh) * 2018-09-29 2019-01-25 深圳市金溢科技股份有限公司 一种电子标签验证方法及相关装置
CN114489493B (zh) * 2022-01-07 2023-08-15 广州万协通信息技术有限公司 Mifare类卡模拟使用大容量Flash存储的实现方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102037499A (zh) * 2008-05-19 2011-04-27 Nxp股份有限公司 Nfc移动通信设备和nfc读取器
CN102741858A (zh) * 2009-10-28 2012-10-17 数字标记公司 基于传感器的移动搜索、相关方法和系统
CN103914672A (zh) * 2013-01-07 2014-07-09 三星电子株式会社 用于在便携式终端中提供近场通信功能的装置和方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130225079A1 (en) * 2012-02-24 2013-08-29 Identive Group, Inc. Providing Continued Operation of NFC Mobile Devices and Tags

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102037499A (zh) * 2008-05-19 2011-04-27 Nxp股份有限公司 Nfc移动通信设备和nfc读取器
CN102741858A (zh) * 2009-10-28 2012-10-17 数字标记公司 基于传感器的移动搜索、相关方法和系统
CN103914672A (zh) * 2013-01-07 2014-07-09 三星电子株式会社 用于在便携式终端中提供近场通信功能的装置和方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于Android平台的NFC信息管理系统的设计与实现;赵特木;《中国硕士学位论文全文数据库信息科技辑》;20130831;I138-392 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3522023A1 (fr) * 2018-02-02 2019-08-07 STMicroelectronics (Grenoble 2) SAS Architecture de mémoire d'un dispositif de communication en champ proche
FR3077701A1 (fr) * 2018-02-02 2019-08-09 Stmicroelectronics (Grenoble 2) Sas Architecture de memoire d'un dispositif de communication en champ proche

Also Published As

Publication number Publication date
CN104915696A (zh) 2015-09-16

Similar Documents

Publication Publication Date Title
CN104915696B (zh) 一种基于Android平台的NFC读写方法
KR101533941B1 (ko) Rfid 카드를 관리하는 방법 및 단말
US20150326263A1 (en) Communications Method, Apparatus, and System Based on Subscriber Identity Module
RU2006130300A (ru) Устройство записи данных, способ и программа для запоминающего устройства портативного терминала
CN201408549Y (zh) 一种u盘和智能卡的复合设备
CN101383994B (zh) 一种apdu命令的数据处理方法
CN100548061C (zh) 一种可在关闭通信模块时读取卡信息的移动终端和方法
CN105554248A (zh) 一种确保保密区域安全的方法和装置
CN107491706A (zh) 基于移动终端的nfc压力测试方法、系统及存储装置
CN106067049A (zh) 一种基于nfc技术的安卓客户端读卡方法
CN106570695A (zh) 交易路由识别方法及系统
CN101384037A (zh) 移动应用与智能卡之间的专用数据通道建立方法
CN102054155A (zh) 具有身份证识别功能的ic卡读卡器
CN102255999A (zh) 终端与智能卡之间的通信协议确定方法以及扩展卡
CN104102935A (zh) 一种协助移动主机实现交互特征信息的方法和辅助装置
US20140223517A1 (en) Data processing and storage device
CN106094207B (zh) 虚拟现实系统和虚拟现实眼镜的权限管理方法
CN103491537A (zh) 一种接入无线网络的方法和设备
CN201828923U (zh) 具有身份证识别功能的ic卡读卡器
CN206075314U (zh) 一种带有sim卡读写功能的蓝牙智能卡
CN108521646B (zh) 一种近场通信方法、装置及计算机可读存储介质
CN207637170U (zh) 二维码防丢失云服务系统
CN207382332U (zh) 带身份核验的物联网移动终端
CN201522717U (zh) 一种智能卡数据处理装置
CN207354270U (zh) 一种基于nfc的高职院校贫困学生消费数据采集系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant