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

文档序号:9200710阅读:729来源:国知局
一种基于Android平台的NFC读写方法
【技术领域】
[0001]本发明涉及外部数据处理、计算机应用领域,尤其涉及的是一种基于Android平台的NFC读写方法。
【背景技术】
[0002]近年来,随着网络和通信技术的快速发展,智能手机在人们的生活中占据着越来越重要的位置,据美国市场研宄公司IDC统计报告称,2014年全球手机出货量达到11.67亿部,比2013年同比增长了 25.9%,同时搭载Android操作系统的智能手机在其中的比例已达到了 75%,稳居智能手机出货量第一名。NFC(Near Filed Communicat1n)近场通信技术是由非接触式射频识别(RFID)及互联互通技术整合演变而来,在单一芯片上结合感应式读卡器、感应式卡片和点对点的功能,能在短距离内与兼容设备进行识别和数据交换。NFC根据应用的不同可采用三种不同的工作模式:读写模式(也称读卡器模式、读写模式)、P2P(点对点)模式、卡模拟模式(也称支付模式)。在移动通信领域,人们可以在有NFC功能的Android智能手机上进行智能海报阅读,移动支付,门禁控制等操作,在旅游社交领域,博物馆可以使用NFC技术为游客提供服务,游客可以通过智能手机访问展品信息,同时还可以进行交流互动,发展前景广阔。
[0003]而在NFC的读取方面,市面上的NFC读写软件在读取方面存在着如下缺陷:由于写入的数据以16进制的形式保存,读取的时候不能很好的识别;或者在写入数据方面不能写入中文和对写入数据的长度有限制(必须为16位),写入数据时可能会写到NFC卡片的保护块,而导致卡片的扇区出现死区而损坏,不方便写入。
[0004]因此,在NFC的读写方面存在不足,需要改进。

【发明内容】

[0005]为了克服现有的NFC读写方法存在着读取识别不方便,对写入数据的要求苛刻(数据内容必须为16位,且不能为中文)的不足,本发明提供一种读取方便,写入自由度高,对NFC卡片内存零破坏的基于Android平台的NFC读写方法。
[0006]本发明解决其技术问题所采用的技术方案是:
[0007]一种基于Android平台的NFC读写方法,所述的读写方法包括以下步骤:
[0008]I)打开本应用程序,判断设备状态:
[0009]1.1)先检测设备支持NFC功能与否,若不支持则弹出提示框,退出应用程序;
[0010]1.2)若设备支持该功能但未开启NFC功能,则出现提示框,提醒开启设备的NFC功能,开启后进行下一步;
[0011]2)将标签靠近设备背面,等待程序读取;
[0012]3)NFC卡片的读操作:当有标签靠近时,应用程序会提示发现一个NFC卡片信息,则启动Android标准配置文件中过滤器找到定义好的应用程序主活动Activity,用户可以在活动中执行需要的操作;
[0013]4)NFC数据格式信息的获得:通过从主活动Activity中的意图过滤器获取卡片信息,并将其保存在数据格式信息类中;
[0014]5)NFC数据格式信息的解析:通过获得的信息进行数据格式转化解析,从而得到卡片中写入的真实内容,即之前写入的数据;
[0015]6)NFC卡片的写操作:当NFC应用程序发现一个NFC卡片时,会启动Android标准配置文件中定义好的对应主活动Activity,执行Activity中的写操作:
[0016]6.1)获取卡片的对内存操作指令,并连接;
[0017]6.2)在写入数据的过程中,设定好写入的块,防止写入扇区的尾块中而导致扇区出现死区的现象;
[0018]6.3)将写入的数据转为byte型,并判断写入数据的大小,如果超出范围,提示写入数据超过内存,并返回,否则继续下一步;
[0019]6.4)获取写入扇区的独立密码;
[0020]6.5)判断写入数据的byte型长度,小于16byte的补0,大于16byte但小于48byte的自动转为存储与本扇区的其他块,大于48byte的,转到步骤6.3)获取下一个扇区的密码,再重复步骤6.4),直至存储结束;
[0021]6.6)关闭卡片对内存操作的指令连接;
[0022]7)读取存储的16进制数据内容:对写入存储的数据利用ASCII码扩展表进行转换,还原存储数据的内容。
[0023]进一步,步骤3)中发现卡片和卡片的分发系统包括以下步骤:
[0024]3.1)如果目标 NFC 卡片包含了系统支持的 NDEF (NFC Data Exchange Formate)消息,即NFC数据转换格式消息,则NFC系统模块将直接把此NDEF消息分发给感兴趣的Activity活动类,如果有目标Activity,则直接分发给此活动类,否则继续下一步;
[0025]3.2)如果目标NFC卡片包含了系统不支持的NDEF消息,或者3.1)中没有目标Activity,则NFC系统模块将尝试分发一个ACT1N_TECH_DISCOVERED发现支持类型的通知;NFC系统模块在分发此通知时,将首先分析目标卡片所支持的使用技术,然后寻找注册了支持这些卡片技术的目标活动Activity,并将意图1ntent分发给Activity ;如果没有合适的目标Activity,则转入下一步;
[0026]3.3)NFC系统模块将分发ACT1N_TAG_DISCOVERED通知给注册了该通知的感兴趣目标活动Activity。
[0027]再进一步,步骤4)中的获取卡片信息的读取方法为:先获得卡片对内存的操作指令,然后再获取每个内存扇区的密码,找到要读取数据的块,再将内存中的16进制数据每2位或者4位进行美国标准交换信息码扩展码转换,从而识别中文内容,最后关闭对内存的操作指令,完成整个读取过程。
[0028]本发明的技术构思为:对NFC卡片的内容读取方法进行了改进,利用ASCII (美国标准信息交换代码)码扩展表,使其读取内容支持的范围变大;在写入前,首先判断卡片的内存大小,然后获取扇区和块等信息,并获取每个扇区的密码;写入数据时,将写入数据转换为byte型,对不足16位的长度或者超过16位的byte型数据,利用数组元素复制的方法对数据进行分割和补充,消除对写入数据的苛刻要求的影响,使得写入数据更加自由简单;同时,在判断卡片信息时,能够识别卡片的尾块,从而在写入数据时,避免写入尾块而导致卡片出现死区而损坏。
[0029]本发明的有益效果为:不仅写入自由度高,而且对NFC卡片内存零破坏。
【附图说明】
:
[0030]图1是读取写入数据前的界面。
[0031]图2是读取写入数据后的界面。
[0032]图3是转换为ASCII码的界面。
【具体实施方式】
[0033]下面结合附图对本发明作进一步描述。
[0034]参照图1?图3,一种基于Android平台的NFC读写方法,包括以下步骤:
[0035]I)打开本应用程序,判断设备状态:
[0036]1.1)先检测设备支持NFC功能与否,若不支持则弹出提示框,退出应用程序;
[0037]1.2)若设备支持该功能但未开启NFC功能,则出现提示框,提醒开启设备的NFC功能,开启后进行下一步;
[0038]2)将标签靠近设备背面,等待程序读取;
[0039]3) NFC卡片的读操作:当有标签靠近时,应用程序会提示发现一个NFC卡片信息,则启动Android标准配置文件中过滤器找到定义好的应用程序主活动Activity,用户可以在活动中执行需要的操作;
[0040]4)NFC数据格式信息的获得:通过从主活动Activity中的意图过滤器获取卡片信息,并将其保存在数据格式信息类中;
[0041]5)NFC数据格式信息的解析:通过获得的信息进行数据格式转化解析,从而得到卡片中写入的真实内容,即之前写入的数据;
[0042]6)NFC卡片的写操作:当NFC应用程序发现一个NFC卡片时,会启动Android标准配置文件中定义好的对应主活动Activity,执行Activity中的写操作:
[0043]6.1)获取卡片的对内存操作指令,并连接;
[0044]6.2)在写入数据的过程中,设定好写入的块,防止写入扇区的尾块中而导致扇区出现死区现象;
[0045]6.3)将写入的数据转为byte型,并判断写入数据的大小,如果超出范围,提示写入数据超过内存,并返回,否则继续下一步;
[0046]6.4)获取写入扇区的独立密码;
[0047]6.5)判断写入数据的byte型的长度,小于16byte的补0,大于16byte但小于48byte的自动转为存储与本扇区的其他块,大于48byte的,转到步骤6.3)获取下一个扇区的密码,再重复步骤6.4),直至
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1