目录
Show 摘要:本文章对Android开发中的NFC技术进行了比较系统的描述,旨在让对NFC无了解的人能够快速了解NFC功能的大体情况。 1.“NFC”的自我描述1.1 NFC功能的基本概念 NFC功能的全称为 Near Field Communication 即近场通信技术。 1.2 NFC功能的背景、特性及发展趋势 背景:NFC由非接触式射频识别(RFID)及互联互通技术整合演变而来,在单一芯片上结合感应式读卡器、感应式卡片和点对点的功能,能在短距离内与兼容设备进行识别和数据交换。这项技术最初只是RFID技术和网络技术的简单合并,现在已经演变成一种短距离无线通信技术,发展态势迅速。 发展趋势:随着人民生活水平与社会发展速度的不断提高,以及人们对手机的应用越来越广泛,通过将智能卡嵌入到手机中实现NFC技术和手机的结合,使得NFC技术能广泛应用于一些日常的生活中去,大大方便了人民的日常生活。目前NFC的发展趋势已应用在许多领域之上,如:公交出行、门禁、移动支付、设备连接等方面。所以研究NFC技术具有一定的实用意义与重要性。 2.NFC的基础知识、基本原理2.1 NFC的工作模式
由于NFC通信总是由一个发起者和一个接收者组成,发起者会主动发送电磁场,可以为被动接收者提供电源,其基本原理和收音机类似。正是由于被动式接收者可以通过发起者提供电源,因此接收者可以有非常简单的形式。NFC功能的工作模式可概括为三种: 2.2 实现NFC功能需要的基础知识在描述NFC功能的实现时,需要掌了解一些基础的知识点,例如:NDEF数据格式及相关内容、NFC标签调度系统、NFC标签映射的实现、Android Beam等。 2.2.1 NDEF数据格式 需要了解NDEF数据格式的原因是因为,进行NFC操作时用的是NDEF消息格式来发送和接收NFC数据,是NFC数据交换格式,NFC组织约定的NFC
tag中的数据格式。NEDF全称为NFC Data Exchange Format 是轻量级的紧凑的二进制格式,可带有URL、vCard和NFC定义的各种数据类型。
2.2.2 Android对NFC的支持 Android对NFC的支持主要在 android.nfc 和android.nfc.tech 两个包中。 android.nfc包中主要类及接口截图: android.nfc,tech包中主要类及接口截图: 2.2.3 Android Beam 在Android 中将NDEF数据从一台设备发送到另一部NFC设备的功能的实现是通过Android Beam的技术来实现的。Android Beam是一个基于近场通信所做的新功能,是一款应用程序,旨在最大程度地利用NFC技术,可让用户对几乎任何东西进行分享,无论是联系人、图片、网页链接还是YouTube链接。 2.2.4 NFC前台调度系统 主要是一种用于在运行的程序中,处理NFC
tag的技术,使得当前Activity能直接响应NFC标签,而不需要用户在选择所有能处理的Activity,之所以要使用到此系统的原因,就是因为当android设备扫描到一个NFC tag,通用的行为是自动找最合适的Activity会处理这个tag Intent而不需要用户来选择哪个Activity来处理。因为设备扫描NFC tags是在很短的范围和时间,如果让用户选择的话,那就有可能需要移动设备,这样将会打断这个扫描过程,从而中断该连接。
2.2.5 NFC标签调度系统及标签解析过程 NFC标签调度系统用于分析扫描到的NFC标签,通过解析数据,在被扫描到的数据中尝试找到最适合的应用程序。 2.3 实现NFC功能代码的基本步骤 进行支持NFC程序的开发时的基本步骤为:
进行intent-filter过滤器声明(以NDEF类型为例):
2. 进行定义可接收Tag的Activity,配置一下launchMode属性在AndroidManifest.xml中,例:
3. 进行NFCAdapter的获取
4. 进行相关NFC功能操作的编写,实现具体操作,以及相关代码的编写,完成程序编写。 3.进行NFC程序开发实战进行支持NFC程序的应用进行实战开发,本次编写的代码为对参考资料6中作者代码的借鉴,在其基础上进行修改、简化完成的。 3.1项目结构 项目结构的大致截图如下: 3.2项目源码 阅读源码时,请注意查看相应注释。
MainActivity类:为系统的主类,界面入口处,通过自定义数组与数组适配器在activity_main.xml布局文件中实现了列表视图,通过switch语句使得在主界面可以实现自定义数组中所具有的操作,并且在该类的Oncreate方法中进行了NFCAdapter的获取与判断设备是否支持NFC功能的实现。具体代码为:
NfcBase类 :为进行NFC相关操作的基础类,为其它进行NFC操作的类服务,其它类需继承它。具体代码为:
NFC_AutoSearch_url类 :具体实现的功能为解析nfc数据tag,往nfc标签中写入数据即百度的链接并自动访问该网站,具体实现为:
activity_main.xml布局类 :代码如下:
activity_nfc_url.xml布局类 :具体代码如下:
3.3实现效果 因为无法在虚拟机上运行所以就将程序导出为apk,在手机是进行运行,但是由于未事先购买nfc标签,导致也无法在手机在进行效果实验。但最终结果想来是正确的(待有nfc标签时,会进行验证并更新博客),在手机上运行的截图如下: NFC感应界面截图: 该程序工程已上传到个人github网址中:https://github.com/SuXianPeng/Project-NFC/tree/master 小结 本篇博客比较系统的对NFC功能进行了描述,其中也参考了许多高手的博客,通过此次博客对NFC功能的原理与实现有了比较明晰、清楚的了解。博客就先写到这,如果有那些不足,或错误、需要改正之处,欢迎指出。 参考资料
作者:苏显鹏 |