Android開發之深刻理解NFC(一)

深刻理解NFC

NFC(Near field communication,近場通訊)也叫作近距離無線通訊技術。瀏覽器

從原理來講,NFC和wifi相似,兩者都利用無線射頻技術來實現設備之間的通訊。數據結構

可是,和WIFI相比,NFC的工做頻率爲13.55Hz,有效距離爲4cm,支持的傳輸速率有106kps、212kps和424kps三種。框架

1 NFC基礎知識

1.1 NFC概述

 

 

NFC融合了三條主要的數據發展路線spa

  • RFID技術路線,即無線射頻識別技術
  • 磁條卡技術路線
  • 移動終端線路,演化了攜帶NFC功能的終端設備

NFC的技術框架3d

由圖可知。orm

從用戶角度(即Application層之上)來看,NFC有三種運行模式(operation mode)。blog

Reader/write模式:簡稱R/W,和NFC Tag/NFC Reader相關圖片

Peer-to-Peer模式:簡稱P2P,它支持兩個NFC設備交互。ip

NFC Card Emulation模式:簡稱CE,它能把攜帶NFC功能的設備模擬成Smart Card,這樣就能實現諸如手機支付、門禁卡之類的功能。字符串

1.2NFC R/W運行模式

  • 左邊的只能終端扮演了NFC Reader角色
  • 在R/W模式中,交互操做的發起方只能是NFC Reader,所以它也稱爲Initiator或Active Device
  • 右邊的NFC Tag,因爲須要NFC Reader經過電磁感應爲其提供電能,因此在R/W模式中,NFC Tag只能做爲交互操做的Target

NFC Forum定義了四種類型的Tag,分別爲Type1,Type2,Type3和Type4.

 

NFC Forum定義了兩個通用的數據結構用於NFC Device之間(包括R/W模式中的NFC Reader和NFC Tag)傳遞數據。這兩個通用數據結構分別爲NFC Data Exchange Format(NDEF)以及NFC Record

NFC四種不一樣類型的Tag有何區別

 

雖然NFC Tag有四種不一樣類型,但爲了保證最大兼容性,NFC Forum建議NFC設備之間儘可能使用通用數據結構NDEF和NFC Record來交換信息。

 

NFC R/W 模式涉及的規範較多,包括:

  • NFC Reader如何與不一樣類型的Tag交互,這部份內容涉及很是底層的一些協議。
  • NDEF和一些經常使用數據類型定義。

 

  1. NDEF和NFC Record

      (1)NDEF和NFC Record之間的關係

NFC設備之間每一次交互的數據都會封裝在一個NDEF Message中,而一個NDEF Message能夠包含多個NFC Record,真正的數據則封裝在NFC Record中。

在一個NDEF Message中,第一個NFC Record須要設置其MB位(Message Begin)爲1,表示它是該消息中第一個NFC Record,最後一個NFC Record需設置ME位(Message End)位爲1,表示它是此消息中最後一個NFC Record。

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字段僅需一個,這代表Playload數據長度將限制在255字節之內)
  • IL(ID_LENGTH標誌,用於指明Header中是否包含ID Length和ID這兩個字段)
  • TNF(Type Name Format標誌,用於指明Payload的類型,NFC Forum定義了一些經常使用的Payload類型)
  • Type Length 指明Record Header中Type字段的長度
  • Payload Length3~Payload Length0 這4個字段共同指明Payload字段的長度。若是SR標誌被設置,則Record Header僅包含一個Payload length字段
  • 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 Forum規定了一些經常使用的數據類型。

      

  • 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規範。
  • Absolute URI:絕對URI
  • NFC Forum External Type,後面介紹
  • Unknown:表明Payload中的數據類型未知。
  • Unchanged:這種類型的數據用於NFC Record分片。例如一個大的數據須要經過多個NFC Record來承載,除第一個NFC Record分片外,該數據對應的其餘NFC Record分片都必須設置TNF爲Unchanged。

  在TNF七大類型中,NFC Forum經過RTD規範定義了其中的WKT(Well-KnownType)和External Type兩種類型。

  簡單來講,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字段取值爲「Ge」

  External Type:爲第三方組織定義的類型,目前NFC Forum沒有定義相關的數據類型

2.NFC Record實例

(1)URI Record Type

URI Record Type屬於NFC Forum Well-known Type的一種,其對應的Type字段取值爲「U」

對於這種類型的NFC Record,其Payload組織結構

 

在URI Record Payload中,第一個字節指明URI的ID碼

http://www.nfc.com這樣的信息該如何封裝爲一個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實例

攜帶「Hello World」字符串信息的NDEF消息各字段的取值狀況。

 

至此NFC R/W運行模式介紹完畢。在R/W模式下,對應用程序而言最重要的工做就是解析NDEF消息。NFC Forum定義了七種數據類型,其中內容比較豐富的屬於NFC Forum Well Known Type。

相關文章
相關標籤/搜索