(邓凡平)深入理解android: NFC部分-----1

本章所涉及的源代码文件名及位置
·ForegroundDispatch.java
development/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundDispatch.java
·Beam.java
development/samples/AndroidBeamDemo/src/com/example/android/beam/Beam.java
·NfcService.java packages/apps/Nfc/src/com/android/nfc/NfcService.java
·P2pLinkManager.java
packages/apps/Nfc/src/com/android/nfc/P2pLinkManager.java
·NativeNfcManager.java
packages/apps/Nfc/nxp/src/com/android/nfc/dhimpl/NativeNfcManager.java
·P2pEventManager.java
packages/apps/Nfc/src/com/android/nfc/P2pEventManager.java
·SnepServer.java packages/apps/Nfc/src/com/android/nfc/SnepServer.java
·NfcDispatcher.java
packages/apps/Nfc/src/com/android/nfc/NfcDispatcher.java
·SendUi.java packages/apps/Nfc/src/com/android/nfc/SendUi.java
·SnepClient.java packages/apps/Nfc/src/com/android/nfc/SnepClient.java

NFC Forum的职责和Wi-Fi Alliance类似,它不但负责制定NFC相关的技术标准,同时还
通过NFC认证测试①来保证各厂家的NFC产品符合NFC规范。
从原理上说,NFC和Wi-Fi类似,二者都利用无线射频技术来实现设备之间的通信。不
过,和Wi-Fi相比,NFC的工作频率为13.56MHz,有效距离为4cm左右,目前所支持的数
据传输速率有106kbps、212kbps和424kbps三种。

RFID技术路线,即无线射频识别技术(图左边)。该技术路线发源于条形码
(Barcodes),然后发展出了RFID,最终出现了NFC中的两个重要组件NFC Tag(标
签)和NFC Reader。NFC Tag的作用和Barcodes类似,它是一种用于存储数据的被动式
(Passive)RFID Tag,其最重要的特征就是NFC Tag自身不包含电源组件,所以它工作
时必须依靠其他设备(比如NFC Reader)通过电磁感应的方式向其输送电能。和NFC Tag
相对应的组件是NFC Reader,它首先通过电磁感应向NFC Tag输送电能使其工作,然后根
据相关的无线射频通信协议来存取NFC Tag上的数据。

在这里插入图片描述
由图8-2可知,从用户角度(即图中的Applications层之上)来看,NFC有三种运行模
式(operation mode)。Application之下的三个箭头描述了三种运行模式所使用的协议栈。

·Reader/Write模式:简称R/W,和NFC Tag/NFC Reader相关。
·Peer-to-Peer模式:简称P2P,它支持两个NFC设备交互。
·NFC Card Emulation模式:简称CE,它能把携带NFC功能的设备模拟成Smart
Card,这样就能实现诸如手机支付、门禁卡之类的功能。

Type A、B和F主要区别在于RF层的信号调制解调方法、传输速率及数据编码方式上。

RF层之上是Mode Switch,用于确定对端NFC Device的类型并选择合适的RF层协议
与之通信。
在这里插入图片描述
由图8-3所示的NFC Forum规范框架可知,NFC Forum本身只定义了P2P模式和R/W
模式相关的规范。CE模式比较复杂。

在RF层,NFC Forum定义了三个主要规范。
·Analog Specifications:该规范描述了NFC设备RF层的电气特性。
·Digital Protocal Specification:该规范在ISO 18092、ISO 14443及JIS X6319-
4之上定义了NFC设备之间的数字通信协议,它使得基于不同底层协议例如Type A或Type
F的NFC设备之间或者NFC设备与其他使用ISO 18092等规范的设备之间能够交互。
·NFC Activities Specification:该规范为各运行模式对应的协议栈提供支持,例如
P2P模式下两个NFC设备如何建立链接,R/W模式下NFC Device如何操作NFC Tag。
图8-3最上层的Reference Applications表示NFC Forum在应用层面所定义的一些规
范。目前有两个规范。
·Connection Handover:两个NFC设备通过它来协商用蓝牙或Wi-Fi来开展后续的
数据传输工作。
·Personal Health Device Communication:该规范定义了如何利用NFC技术在个
人健康设备之间交换数据信息。
另外,除了图8-3所示的规范外,NFC还制定了一个NCI(NFC Controller
Interface)规范,该规范制定了一套交互接口,使得主机设备(Device Host,以手机为
例,NFC芯片被集成到某个手机中,那么手机就是Device Host)能够使用这套接口来和
NFC芯片交互。

8.2.2 NFC R/W运行模式
在这里插入图片描述
·左边的智能终端扮演NFC Reader角色。位于其内部的NFC芯片包含NFC
Controller、Antenna(天线)和Contactless Front-End 三个部分。注意,图中所示的SWP等内容将在8.2.4节介绍。

NFC控制器,它可与Device Host或Secure Element安全单元交互;
CLF,非接触式前端,负责射频信号的调制解调等工作;

在R/W模式中,交互操作的发起方只能是NFC Reader,因此它也称为Initiator或Active Device。

·右边的NFC Tag,由于需要NFC Reader通过电磁感应为其提供电能,所以在R/W模式中,NFC Tag只能作为交互操作的Target(也称为Passive Device)。

NFC Forum定义了四种类型的Tag,分别为Type 1、Type 2、Type 3和Type 4。这
四种类型NFC Tag的区别在于存储空间大小、数据传输率以及底层使用的协议。

NFC Forum定义了两个通用的数据结构用于NFC Device之间(包括R/W模式中的
NFC Reader和NFC Tag)传递数据。这两个通用数据结构分别是NFC Data Exchange
Format(NDEF)以及NFC Record。

由于NFC本身源自RFID技术,二者在一些底层协议上也相互兼容,所以很多RFID Tag也能被NFC
Reader识别和操作。

虽然NFC Tag有四种不同类型(由上文可知,实际上能被NFC Reader读写的RFID
Tag还远不止四种),但为了保证最大兼容性,NFC Forum建议NFC设备之间尽量使用通
用数据结构NDEF和NFC Record来交换信息。

1.NDEF和NFC Record
(1)NDEF和NFC Record[8][9]之间的关系
根据NFC Forum的定义,R/W模式下,NFC设备之间每一次交互的数据都会封装在一
个NDEF Message中,而一个NDEF Message可以包含多个NFC Record,真正的数据则
封装在NFC Record中。图8-5展示了NDEF Message和NFC Record之间的关系。

在这里插入图片描述

在一个NDEFMessage中,第一个NFC Record需设置其MB位(Message Begin)为1,表示它是该消
息中第一个NFC Record,最后一个NFC Record需设置ME位(Message End)位为1,表
示它是此消息中最后一个NFC Record。

在这里插入图片描述
NFC Record本身的组织结构如图8-6所示。NFC Record分为NFC Record
Header(头部信息)和Payload(数据载荷)两大部分。

Record Header中最重要的是其第一字节。该字节有6个标志信息,分别如下。
·MB(Message Begin标志)
·ME(Message End标志)
·CF(Chunk Flag标志,表示该Record是否为分片Record)
·SR(Short Record标志。如果该标志被设置,则图中的4个Payload Length字段仅
需一个,这表明Payload数据长度将限制在255字节以内)
·IL(ID_LENGTH标志,它用于指明Header中是否包含ID Length和ID这两个字段)
·TNF(Type Name Format标志,用于指明Payload的类型,NFC Forum定义了一
些常用的Payload类型,详情见下文分析)
其他字节如下。
·Type Length指明Record Header中Type字段的长度。
·Payload Length 3~Payload Length 0这4个字段共同指明Payload字段的长度。
如果SR标志被设置,则Record Header仅包含一个Payload length字段。
·ID Length指明ID字段的长度。如图所示IL标志未设置,则ID Length和ID字段都
不存在。
·Type字段表明Payload的类型,NFC Forum定义了诸如URI、MIME等类型的
Type,其目的是方便不同的应用来处理不同Type的数据,例如URI类型的数据就交给浏览
器来处理。
·ID需要配合URI类型的Payload一起使用,它使得一个NFC Record能通过ID来指向
另外一个NFC Record。

(2)TNF和RTD
TNF用于描述一个NFC Record中数据(Payload)的类型,为了方便应用程序能正确
解析NFC Record中的数据,NFC Forum规定了一些常用的数据类型,如表8-2所示。
在这里插入图片描述

目前NFC支持七种数据类型。
·Empty:表示该Record中没有数据,即相当于一个空的NFC Record。
·NFC Forum Well-Known Type:由NFC Forum定义的一些较为常用的数据类
型,包括URI、TEXT等,其格式遵循NFC Forum RTD(Record Type Definition)规
范。下文将详细介绍它。
·MIME:它是Multipurpose Internet Mail Extensions的缩写,遵循RFC2046规
范。例如,当TNF取值为MIME时,其Type字段取值可为"text/plain"或"image/png"等。
·Absolute URI:绝对URI,遵循RFC 3986规范。例如某文件的绝对URI
为"http://android.com/robots.txt",而其相对URI则为"robots.txt"。
·NFC Forum External Type:也由NFC Forum的RTD规范定义,下文将介绍它。
·Unknown:代表Payload中的数据类型未知,它和MIME类型"application/octetstream"
有些类似,这种类型的数据由相应的应用程序来解析。
Unchanged:这种类型的数据用于NFC Record分片。例如一个大的数据需要通过多
个NFC Record来承载,除第一个NFC Record分片外,该数据对应的其他NFC Record分
片都必须设置TNF为Unchanged。

在TNF七大类型中,NFC Forum通过RTD规范定义了其中的WKT(Well-Known
Type)和External Type两种类型。虽然RTD规范全长只有20来页,但阅读起来比较枯
燥,在此,笔者总结其核心内容。
简单点说,WKT就是NFC Forum自己定义的一些常用数据类型,目前常用类型如下。
·URI Record Type:用于存储URI数据,对应Type字段取值为"U"。
·Text Record Type:用于存储文本数据,对应Type字段取值为"T"。
·Signature Record Type:用于存储数字签名数据,对应Type字段取值为"Sig"。
·Smart Poster Record Type:智能海报,用于存储与该海报相关的一些资讯信息,
如图片、相关介绍等,对应Type字段取值为"Sp"。
·Generic Control Record Type:用于传递控制信息,对应Type字段取值为"Gc"。
·External Type:为第三方组织定义的类型,目前NFC Forum没有定义相关的数据
类型。
提示NFC Forum目前定义的所有WKT类型列表可参考http://www.nfcforum.
org/specs/nfc_forum_assigned_numbers_register。

2.NFC Record实例[10][11]
本节这两个实例分别来自URI Record Type规范和TEXT Record Type规范。先来看
URI Record Type实例。

(1)URI Record Type实例
URI Record Type属于NFC Forum Well-known Type的一种,其对应的Type字段
取值为"U"。对于这种类型的NFC Record,其Payload组织结构如表8-3所示。
在这里插入图片描述
在URI Record Payload中,第一个字节指明URI的ID码,表8-4为NFC Forum定义的
几种ID码。

在这里插入图片描述
了解上述信息后,我们来看"http://www.nfc.com"这样的信息该如何封装为一个NDEF
消息,图8-7所示为NDEF消息各字段的取值情况。
在这里插入图片描述
由于该NDEF消息只包含一个NFC Record,所以这个唯一的NFC Record将设置MB和
ME标志位为1。另外,由于数据量小于255字节,所以SR标志位为1。最后,该Record携带
的数据属于URI类型,它为Well-Known Type的一种,所以TNF取值为0x01。

Type Length字段取值为0x01,对应的Type字段取值为"U",代表URI Record
Type。

根据本节对URI Record的介绍,这种类型Record的Payload包含ID Code和data两个
部分。ID Code取值为0x01占据1字节(代表"http://www"),而data为"nfc.com"占据7字
节,所以整个Payload长度为8字节,故Payload length字段取值为0x08。

当应用程序获取Payload信息后,将根据ID Code和Data的取值最终计算出对应的URI
为"http://www.nfc.com"。

(2)Text Record Type实例
Text Record Type和URI Record Type类似,其Payload组织结构如表8-5所示。

在这里插入图片描述
在这里插入图片描述

图8-8所示为携带"Hello World"字符串信息的NDEF消息各字段的取值情况。

至此,NFC R/W运行模式介绍完毕。在R/W模式下,对应用程序而言最重要的工作就
是解析NDEF消息。NFC Forum定义了七种数据类型,其中内容比较丰富的属于NFC
Forum Well Known Type。本节介绍了WKT中最简单的URI Record和TEXT Record。
读者可在本节基础上自行研究其他几种数据类型。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
邓凡平WiFi基础知识 邓凡平Wi-Fi基础知识包括以下几个方面: 1. Wi-Fi的定义:Wi-Fi是一种无线网络技术,全称为无线保真。它使用无线信号将数据传输到不同设备之间,使设备能够无线连接到互联网。 2. Wi-Fi的工作原理:Wi-Fi使用无线电波传输数据。路由器通过将互联网连接到无线信号发送器,然后将信号发送到接收器(例如智能手机或电脑)上,从而实现无线网络连接。 3. Wi-Fi的频段:Wi-Fi的频段通常是2.4 GHz和5 GHz。其中,2.4 GHz频段有较强的穿透能力,适用于大范围的覆盖,但容易受到干扰;而5 GHz频段速度更快,但穿透能力较差,适合小范围内高密度设备的连接。 4. Wi-Fi的安全性:Wi-Fi连接的安全性非常重要。常用的Wi-Fi安全协议包括WEP、WPA和WPA2等。使用强密码、启用网络加密等安全措施可以提高Wi-Fi的安全性。 5. Wi-Fi的覆盖范围:Wi-Fi的覆盖范围取决于路由器的信号强度和设备的接收能力。通常,传统家庭路由器的覆盖范围在30-45米左右。 6. Wi-Fi的速度:Wi-Fi的速度与设备类型、路由器性能和网络运营商有关。常见的Wi-Fi标准包括802.11g、802.11n和802.11ac等,其速度分别为54 Mbps、300 Mbps和1 Gbps。 邓凡平是Wi-Fi行业的专家,他对于Wi-Fi技术的研究和应用有着丰富的经验。通过学习邓凡平的Wi-Fi基础知识,我们可以更好地理解和应用无线网络技术,提高网络连接的质量和安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值