(第二篇:安卓系统如何去处理感应到的NFC标签)
上一篇我们简单了解了NFC领域的相关信息,尤其是目前安卓平台能对NFC所支持的情况,这能帮助我们在开发的时候有个大概的功能把握,从而主导我们在实际项目中能去实现相应的功能。那么,我们现在可以从安卓平台上重点了解整个运行机制了。本篇将从基础层次开始讲述安卓系统在实现NFC感应和处理数据上的流程和技术,只有从整体上把握才能让我们在接下来去探究技术细节。
NFC基础:围绕NDEF格式的数据操作,本模块主要从标签读取NDEF数据和设备间的数据传输展开讨论。
从标签中读取数据主要由一个标签调度系统进行控制管理,具有感应NFC标签并对其进行数据类型分析,再从设备中调用一个最适合该数据类型的NFC应用去处理。如果一个应用程序想要处理感应到的NFC标签,则需要声明一个相应的intent过滤才可请求处理。
另一个功能应用Android Beam则允许两个设备靠在一起然后进行数据的传输。这种交互提供了一个比蓝牙更容易的无线传输方式,因为在这种交互中不需要人工地匹配双方设备,整个连接过程是自动而快速的!Android Beam可依靠一系列相应的api实现,所以任何应用程序都可以在两设备间进行数据传送。比如,像浏览器和YouTube这些应用可以利用Android Beam和其它设备分享一些链接或是网页视频等。
前面已经提到标签调度系统这东西了,它负责设备在感应阶段如何去读取里面的信息,这个过程是在设备屏幕未锁定的前提下进行的。当屏幕未锁定且正常运行中的手机发现一个NFC标签时,理想的状况是系统自动调用一个最合适的应用程序去处理而不用让用户手动的在界面上选择哪个来执行。因为整个感应过程是短暂紧迫的,用户的设备需要在短短几厘米范围内去感应标签,如果需要用户去手动选择程序来处理感应的标签那么往往会因为这个动作打断连接过程。所以每个开发者都需要认识到这一点,尽量避免这种现象产生。
为了让开发者能达到这种目标,安卓系统提供了一个特别的标签调度系统来分析扫描到的NFC标签,解析并尽量选择一个最适合处理该标签数据的应用。整个过程将这样实现:
1.解析NFC标签,确定其MIME类型或一个能判断出标签有效信息容量的URI。
MIME type的缩写为(Multipurpose Internet Mail Extensions)代表互联网媒体类型(Internet media type),MIME使用一个简单的字符串组成,最初是为了标识邮件Email附件的类型,在html文件中可以使用content-type属性表示,描述了文件类型的互联网标准。
MIME类型能包含视频、图像、文本、音频、应用程序等数据。
2.封装过程,即将MIME类型或URI和其信息容量封装进一个intent,这两个过程可以参考“NFC标签如何映射到MIME类型和URIS”。
3.利用intent启动一个activity,这可以参考“