Near Field Communication(nfc 近场通信)
nfc是一种短距离的无线通信技术,通信距离是4cm或者更少(有点夸张,10cm内应该是可以的),nfc技术允许在两个支持nfc的Android设备或者一个支持nfc的Android设备和nfc标签(贴纸)之间传输少量的数据。
nfc贴纸的范围是很广的,简单的nfc贴纸仅仅提供读和写,有些一次性的nfc贴纸都是只读的,只可以被写入一次数据,一旦写入就不能再被重新写入。更复杂的一些nfc贴纸提供计算的操作,并且有加密硬件校验对贴纸的访问。最复杂的nfc贴纸包含操作环境,允许在贴纸上执行代码进行复杂的交互,存储在贴纸上的数据可以以各种各样的格式写入,但是大多数的Android framework api 都是基于NFC FORUM(nfc组织,和蓝牙组织sig一样,初始由飞利浦,诺基亚,索尼创建的)定义的NDEF数据标准(NFC Data Exchange Format)
支持nfc的Android设备同时支持nfc的三种主要操作模式
Reader/Writer mode(读卡器模式)
这种模式允许nfc设备读或者写被动的nfc卡片或者nfc贴纸。
P2P mode(点对点模式)
这种模式允许nfc设备和其他的nfc设备交换数据,Android 系统应用 Androidbeam就是基于这种模式实现的。
Card emulation mode (卡模式)
允许nfc设备自己作为nfc卡片,这种nfc卡片可以被其他的nfc读卡器访问,即使用nfc设备来模拟卡片的交易。nfc卡片可以代替现实生活中的ic卡,公交卡,门禁卡,车票,门票等(现实中的卡有用的也都是一些信息,完全可以把这些信息通过虚拟卡片储存起来通过nfc方式被nfc读卡设备读取,这样就可以把现实中的卡片都存储到支持nfc的手机中去)。当前银行的芯片ic卡支持nfc,在手机支付宝的nfc手机上可以读取芯片ic卡的信息。
NFC Basics(nfc 基础)
这篇文档描述了Android如何发现nfc 贴纸卡片和如何识别和程序本身有关的nfc数据,也描述了在程序中如何通过NDEF格式交互nfc数据,最后简单描述了Android的api是如何支持nfc基本功能的。
Advanced NFC(nfc 加强)
这篇文档描述了Android apis 允许使用Android支持各种各样的标签技术,nfc数据交互不支持NDEF格式,或者Android系统不能完全理解NDEF格式的数据的时候,就需要手动的基于自定义的协议栈通过raw格式数据读和写数据,这种情况,Android系统提供了支持,Android系统支持自定义协议栈的nfc数据交互。
Host-based Card Emulation
这篇文档描述了Android设备如何自己实现nfc卡片,任何程序都可以生成一个nfc卡片和被其他的nfc读卡器读取信息。
附录1 nfc和蓝牙的对比
nfc是rfid(射频识别开发技术)演进过来的,由于当前rfid使用不多不再描述,不同点可以参考百度百科nfc的描述。
nfc和蓝牙都是无线通信技术而且都被集成到了移动设备中,二者的不同点为:
nfc不需要复杂的设置程序,蓝牙需要搜索配对链接,相对比,nfc的链接更快。
nfc的距离更短,10cm以内,而蓝牙的距离可以到10m,ble的距离也可以1m
nfc传递数据的速率慢一些,最高400k/s,而蓝牙的速率可以达到2.1M
nfc能量消耗比低功耗蓝牙都低,手机没电关机都可以使用。
nfc都是建立一对一的链接安全性相对比较高
nfc技术和蓝牙技术并不是互相替代的技术,更像是一种互相补充的技术,在不同的领域,不同的需求有着不同的实现,同时利用nfc可以快速连接的特性可以实现蓝牙的快速配对,具体的配对方式文档并没有提供。
详情可以参考百度百科nfc
附录2 当前nfc技术的使用
- nfc支付
- nfc卡片代替现实中的芯片ic卡,门票,门禁卡,公交卡等,可以把这些东西都集成到手机中去。(上面两项使用都是nfc设备的卡模拟技术)
- nfc贴纸标签放到海报上提供信息(可以是链接式的信息),nfc贴纸放到零售店商品上,手机以读取就可以了解到商品的来龙去脉所有的信息(nfc标签提供简单的信息和简单的计算逻辑)。
nfc设备之间信息交换,两个nfc设备可以非常方便的交换通讯录数据等 ,Androidbeam基于这种方式的实现
这种方式比较突出的实现: 蓝牙连接的时候通过nfc实现配对比人工配对要快的多,具体的实现后面补充。 Androidbeam:Android4.1以后提供的功能,利用nfc技术实现两个手机靠近就能交换数据和蓝牙配对。
Androidbeam更详细的可以参考百度百科Androidbeam
参考文章:
NFC FORUM(nfc官方组织文档)