簡介
本文介紹Nokia設備所支持的近場通信技術(NFC)及相關的功能。旨在為使用 Qt/Symbian/Java™ API為Nokia手機開發應用的開發者 剛開始接觸NFC開發時提供有用的信息。
什么是NFC?
NFC是Near Field Communication的縮寫,即近場通信。這是一種短距離無線電技術,使得兩台設備在接觸或靠得很近時互相通信。
- NFC是一種開放平台技術,由NFC論壇標准化。
- NFC基於RFID的擴展。NFC工作在13.56 MHz的頻率。
- NFC通信距離最大10cm。但是為了在Nokia手機上獲得最佳用戶體驗,建議兩台手機互相接觸。
- NFC標准支持不同的數據傳輸率如 106 kBps, 212 kBps, 和424 kBps。
標簽和讀取器
兩台設備進行基於NFC的通信時,可能是一台設備做為讀/寫者,另一個做為標簽。
標簽
標簽是一個簡單的薄薄的設備,包含一個天線和小容量的存儲空間。標簽是一個被動設備,由電磁場提供電力。標簽的內存有只讀,可擦寫,只能寫一次 這些不同的類型。
讀取器
讀取器是一個主動設備,產生無線電信號與標簽通信。在被動通信模式,當讀取器與被動設備靠得很近時,讀取器為被動設備提供電力。
NFC模式
通信模式
NFC設備支持兩種通信模式。
主動模式
在這種模式,目標設備和發起通信設備都有動力,互相之間可以輪流傳輸信號。
被動模式
發起設備差生無線電信號,目標設備由這個信號的電磁場提供動力。目標設備通過調制電磁場回應發起設備。
操作模式
NFC可以運行在ISO/IEC 18092, NFC IP-1, 和ISO/IEC 14443三種無線智能卡標准下(contactless smart card standard)
讀/寫
在這種模式,開啟NFC功能的手機可以讀寫任何支持的標簽, 讀取其中的NFC數據格式標准的數據。
點對點
在這種模式下,兩個NFC設備可以交換數據。 例如,你可以分享啟動藍牙或Wi-Fi連接的參數來啟動 藍牙或Wi-Fi連接。你可以交換如虛擬名片或數字相片等數據。點對點模式符合ISO/IEC 18092標准。
注意:NFC的symbian實現現在支持建立藍牙連接,還不支持Wi-Fi。Java實現還不支持點對點模式。
模擬卡片
支持NFC的手機在與標簽交互時扮演讀取器的角色。在這種模式手機也可做為標簽或被讀取的無線卡片。 注意:Symbian和Java實現還不支持這種模式。
NFC用例
本章我們來看看NFC的使用場景和案例
用於啟動服務
在這種場景中,你可以使用帶有NFC功能的Nokia手機觸及NFC標簽,接收URL,電話號,文本,然后可以用這些來定義啟動某項服務所需要得信息。
智能海報是這種應用的例子,在智能海報背面貼上NFC標簽,當帶有NFC功能的Nokia手機觸及NFC標簽時,手機讀取標簽的信息,然后根據信息的種類,Nokia手機會打開一個視頻流,或打開網頁瀏覽器,或詢問用戶是否願意撥打一個電話。
用於分享
帶有NFC功能的手機可以在點對點模式下分享數據。
例如,兩台具有NFC的Nokia手機可以分享名片信息。當一個用戶選擇要分享的聯系人信息后,手機向另一台手機在NFC無線范圍內發送一個無線信號,另一台手機會識別NFC數據格式中包含的分享信息。
注意:分享不是通過NFC完成的。NFC會初始化藍牙服務,分享實際是通過藍牙完成的。
用於連接設備
NFC能幫助建立設備鏈接,而不需要任何配置或安裝。例如,只需用帶NFC的手機觸及藍牙耳機即可建立藍牙配對。藍牙耳機中內置一個NFC標簽,其中有建立藍牙配對所需要的所有信息,信息保存成NFC數據格式。這里手機扮演一個讀取者的角色。
用於買票
帶NFC的手機可以用於票務應用,作為車票可以替代傳統物理車票。使用是手機接觸讀票器。用戶,可以在售票機支付后,用手機接觸售票機給手機票充值。這里NFC手機扮演卡片的角色,工作在模擬卡片模式。
要使用NFC手機作為旅行票,手機里必須有一個叫保密元素(secure element)的保密環境。保密環境運行票務應用,這里保存比如,剩余的旅行時間,或預付的旅程。
注意:票務用例目前不被Nokia手機支持。
用於支付
帶NFC的手機可以像信用卡一樣用於支付。 支付時,用戶必須將手機與支付終端接觸。這里NFC手機扮演一個卡片(帶芯片的信用卡),支付終端是讀取者,工作在模擬卡片模式。
NFC手機必須有保密元素,在其中像基於芯片的信用卡一樣運行支付應用程序。
注意:支付用例目前不被Nokia手機支持。
NFC標簽
NFC標簽可以用在如海報的應用,記錄少量信息提供給活動的NFC設備。儲存的數據可以包括任何數據例如URL,電話號碼或日歷信息等。
為了使不同NFC標簽提供者和NFC設備制造商的產品相互協作,NFC論壇定義了四種標簽。
要查看目前Symbian和MeeGo 1.2支持的標簽,請看‘NFC 標准和標簽支持’。
NFC論壇標簽種類
NFC 論壇是一個推廣NFC技術的聯盟,NFC論壇推出技術規范來保證設備和服務之間的配合,並為市場提供NFC技術培訓。
在NFC論壇的技術規范網站http://www.nfc-forum.org/specs/spec_list/查看NFC論壇的標簽種類。 標簽的規范定義了實現 閱讀器/擦寫器的技術信息和相應的與之互動的NFC設備的控制功能
標簽類型1
類型1標簽比較便宜適合於多種NFC應用。
- 基於ISO-14443A標准
- 可讀可重寫,可配置成只讀
- 96 byte內存,可擴展到2KB
- 傳輸速率 106kbits/s
- 沒有數據沖突保護
- 市場上有兼容的產品 ———— Innovision Topaz, Broadcom BCM20203
NFC論壇設備如何操作類型1標簽,如何發現,讀取和寫入NDEF數據(參看章節'NDEF')參看類型1標簽操作規范:http://www.nfc-forum.org/specs/spec_list/
標簽類型2
類型2與類型1類似,也是由NXP/Philips MIFARE Ultralight標簽衍生而來的。
- 基於ISO-14443A標准
- 可讀可重寫,可配置成只讀
- 傳輸速率 106kbits/s
- 支持數據沖突保護
- 市場上有兼容的產品 ———— NXP MIFARE Ultralight
標簽類型3
類型3由索尼FeliCa標簽的非保密部分衍生而來。比類型1,2的標簽昂貴。
- 基於日本工業標准(JIS) X 6319-4
- 在生產時定義可讀,可重寫或只讀的屬性。
- 可變內存,每個服務最多1MB空間
- 支持兩種傳輸速率: 212或424kbits/s
- 支持數據沖突保護
- 市場上有兼容的產品 ———— Sony FeliCa
標簽類型4
類型4與類型1類似,是由NXP DESFire標簽衍生而來的。
- 基於ISO-14443A標准
- 在生產時定義可讀,可重寫或只讀的屬性。
- 可變內存,每個服務最大32kB
- 支持三種傳輸速率: 106,212或424kbits/s
- 支持數據沖突保護
- 市場上有兼容的產品 ———— NXP DESFire, SmartMX-JCOP
NXP規范標簽類型
這是由NXP半導體定義的私有標簽類型。
MIFARE類型經典標簽
- 基於ISO-14443A標准
- 可讀可重寫,可配置成只讀
- 可變內存192/768/3584 bytes
- 傳輸速率 106kbits/s
- 支持數據沖突保護
- 市場上有兼容的產品 ———— NXP MIFARE Classic 1K, MIFARE Classic 4K, and Classic Mini
更多關於 MIFARE經典標簽的信息請查看 NXP網站:http://www.nxp.com/.
NFC相關規范
更多關於Symbian和MeeGo 1.2 Harmattan平台支持的標准請看'NFC標准和支持的標簽'一章。
ISO 14443
ISO 14443是著名的國際標准,原來是為非接觸芯片卡片在13.56MHz無線電通信設計的。 ISO 14443 從無線層到命令協議定義了一個協議棧。 無線層ISO14443-2有兩個版本,具有不同的調制和bit編碼方法。稱為A,B版。類似的,ISO 14443指定了兩個版本的包框架和底層協議部分(ISO 14443-3)。 ISO協議棧的最高層定義了傳輸信息的命令接口(ISO 14443-4)。
NFCIP-1
兩台NFC設備間的點到點通信是由近場通信--接口和協議規范,NFCIP-1定義的機制實現的。這個NFC關鍵規范也被稱為ISO 18092和ECMA-340。
NFCIP-1的協議棧基於ISO 14443. 主要的不同時一個新的命令協議,替換了之前協議棧的最高層。
NFCIP-1 包括兩個通信模塊使得NFC設備之間能工作在點對點的模式,也支持與基於NFCIP-1的NFC標簽通信。
MIFARE
MIFARE 指由NXP半導體開發的NFC標簽類型。MIFARE標簽被廣泛用於運輸工具應用的內存卡。 ISO 14443定義了從無線層到命令協議的協議棧。
FeliCa
FeliCa是Sony公司開發的的專利NFC標簽技術,被廣泛用於專買支付和亞洲的運輸工具應用。FeliCa標簽也被集成在移動FeliCa系統的手機模型中。Felica標簽屬於日本的工業標准。標簽基於被動模式的ISO 18902,帶有額外的認證和加密功能。
NFC論壇標准
NDEF NFC數據交換格式
為實現標簽和NFC設備,及NFC設備之間的交互通信,NFC論壇定義了稱為NFC數據交換格式(NDEF)的通用數據格式。
NDEF是輕量級的緊湊的二進制格式,可帶有URL,vCard和NFC定義的各種數據類型。
NDEF使得NFC的各種功能能容易的中使用各種支持的標簽類型傳輸數據,因為NDEF封裝了標簽的種類細節信息,使得應用不用關心與何種標簽在通信。
NDEF交換的信息由一系列記錄組成。每條記錄包含一個有效載荷。自愛和內容可以似乎URL,MIME媒質,或NFC定義的數據類型。使用NFC定義的數據類型,載荷內容必須被定義在一個NFC記錄類型定義(RTD)文件中。
記錄中數據的類型和大小由記錄載荷的頭部注明。
頭部包含,類型域用來指定載荷的類型。載荷的長度數的單位是字節(octet)。可選的指定載荷是否帶有一個NDEF記錄。
類型域的值由類型名字格式指定,請在NFC論壇網站http://www.nfc-forum.org/specs/spec_list/ 的NDEF技術規范的3.2.6章查看支持的類型及相應的TNF值。
RTD 記錄類型定義
NFC論壇定義了幾種優化的記錄類型,用在NDEF記錄中。每個NFC論壇記錄類型定義在記錄類型定義(RTD)文檔中
NFC定義了一下RTD:
- NFC文本RTD
- NFC URI RTD
- NFC 智能海報 RTD
- NFC 通用控制 RTD
- NFC 簽名 RTD
最簡單的文本記錄類型,可攜帶Unicode字符串。文本記錄可包含在NDEF信息中作為另一條記錄的描述文本。 URI記錄類型可用於存儲網站地址,郵件,和電話號碼,存儲成經過優化的二進制形式。
智能海報RTD第一了如何將,URL,短信或電話號碼編入NFC論壇標簽,及如何在設備間傳遞這些信息。
LLCP 邏輯鏈路控制協議
為加強點對點模式的操作,NFC論壇定義了一個鏈路級的協議稱為 邏輯鏈路控制協議(LLCP)。 在NFC點對點協議棧中,LLCP提供對NFCIP-1/ISO18092的額外支持。
LLCP提供兩種鏈路層連接,都支持收發數據,使用下面的數據交換方法:
- 定向連接傳輸, 這里數據交換是可知的
- 無連接傳輸,這里數據交換不可知
在Nokia手機中所使用NFC
Qt API
Qt NFC API包含在跨平台的Qt Mobility工程中。做為connectivity API的一部分,集成在Qt SDK中。
注意:截止本文發布時間,NFC API可能還處在技術預覽階段。
更多關於Qt Mobility API的NFC信息,請參閱 http://doc.qt.nokia.com/qtmobility-1.2.0-tp1/connectivity-api.html. Qt Mobility 信息請參閱 Qt Mobility 開發。
用例
Qt NFC API支持一下用例:
- 與NFC論壇標簽和NFC論壇設備交互
- 目標發現和丟失
- 注冊NDEF消息 handler
- 向NFC論壇標簽讀寫NDEF消息
- 發送指定標簽命令
- 用於點對點通信的客戶端和服務器的LLCP socket連接
類
API | 描述 |
QLlcpServer | NFC LLCP 基於socket的服務器 |
QLlcpSocket | NFC LLCP socket |
QNdefFilter | 過濾符合條件的 NDEF 消息的過濾器 |
QNdefMessage | NFC NDEF 消息 |
QNdefNfcTextRecord | NFC 文本 RTD |
QNdefNfcUriRecord | NFC URI RTD |
QNdefRecord | NFC NDEF 記錄 |
QNearFieldManager | 通過這個類訪問NFC事件的通知 |
QNearFieldTagType1 | 與NFC Tag Type 1 標簽通信的接口 |
QNearFieldTagType2 | 與NFC Tag Type 2 標簽通信的接口 |
QNearFieldTagType3 | 與NFC Tag Type 3 標簽通信的接口 |
QNearFieldTagType4 | 與NFC Tag Type 4 標簽通信的接口 |
QNearFieldTarget | 與目標設備通信的接口 |
例子
- NFC注釋URL: 從NFC標簽顯示包含在NDEF消息中的URL,包含標題和圖片。
- NDEF編輯器: 創建Connectivity API支持的NDEF記錄保存到支持的NFC論壇標簽中。
Symbian API
Symbian^3 提供下列NFC API:
API | Description |
NFC Discovery API | 提供訂閱和發現標簽和NDEF消息的方法 |
NFC Tag Extension API | 提供實現和訪問(讀/寫)各種NFC目標的方法 |
NDEF API | 提供處理NDEF消息和訪問NDEF消息的方法 |
NFC Peer-to-Peer API | Provides LLCP API for peer-to-peer communication between NFC devices |
NFC Content Handler API | 提供訂閱和接收NDEF消息的ECOM插件接口 |
用例
Symbian API 支持一下用例:
- 創建內容處理器插件
- 建立藍牙連接
- 分享文件或數據
- 讀取NDEF信息
- 發現NFC標簽
- 與NFC論壇類型4標簽交換數據
- 讀取NFC論壇類型1,2,3標簽
- 向NFC論壇類型1,2,3標簽寫數據
- 使用(無連接)LLCP 棧傳輸和接收“Hello World!”ASCII文本
- 使用(定向連接)LLCP 棧傳輸和接收“Hello World!”ASCII文本
注意:NFC的Symbian實現不支持模擬卡模式的操作。
例子
- 使用NFC棧和AIW框架分享: 演示了標簽發現,NDEF發現API(Tag Discovery API,NDEF Discovery API),和各種標簽上的讀寫操作
- 標簽發現和NDEF發現: 演示了如何通過NFC通道建立兩台設備的配對,並使用次級通訊渠道(如藍牙)分享文件。通過使用AIW框架,演示了如何分享vCard和vCal。
在Nokia開發者文檔庫查看Symbian^3 開發者庫中的NFC Symbian API,並下載例子: http://library.developer.nokia.com/topic/GUID-E35887BB-7E58-438C-AA27-97B2CDE7E069/GUID-7A72B008-901E-454D-AD93-F99555CA904A.html#GUID-7A72B008-901E-454D-AD93-F99555CA904A.
Java API
JSR 257 Contactless Communication API 1.0 在Symbian 設備上支持NFC功能。 Contactless Communication API使中間件(MIDlet)能使用移動設備上的NFC功能。中間件能讀寫標簽(集成電路)上的小量數據。
用例
Contactless Communication API支持下列用例:
- 發現非接觸目標
- 與非接觸目標間交換數據
注意:NFC的Java實現不支持模擬卡模式或點對點模式的操作。
例子
- UIDReader: 顯示如何創建從非接觸目標中讀取數據的中間件
- URLWriter: 顯示如何創建件向非接觸目標寫入數據的中間件
參看Nokia開發者文檔庫中Java開發者庫的NFC Java API用例並下載例子: http://library.developer.nokia.com/index.jsp?topic=/Java_Developers_Library/GUID-9248DD7F-23BE-40A6-A8DC-823783443F10.html.
支持NFC的Nokia手機
在下面鏈接查看支持NFC的Nokia手機信息:
http://www.developer.nokia.com/Devices/Device_specifications/?filter1=all&filter2=nfc.
支持的NFC標准和標簽種類
Symbian和MeeGo 1.2 Harmattan平台都支持下列NFC標准和標簽:
- NFC A technology
- NFC B technology
- NFC F technology (JIS 6319-A)
- ISO DEP protocol (ISO 14443)
- NFC DEP protocol (NFCIP1 - ISO 18092)
支持下列NFC論壇標簽種類
- NFC 論壇標簽種類 1
- NFC 論壇標簽種類 2
- NFC 論壇標簽種類 3
- NFC 論壇標簽種類 4
注意: NFC的Java實現不支持NFC 論壇標簽種類 4
其他支持的專利標簽種類:
- MIFARE Classic
Nokia手機中的NFC數據處理
Symbian實現中應用程序不能在后台處理保留RTD如 智能海報,URI, 藍牙耳機,和其他通用MIME類型。
當發現一個包含保留RTD的標簽時(參看下面的章節)應用程序的UI前台會收到一個callback,類似的,分享(或快捷設置)智能當應用程序在前台是觸發。
盡管如此,用戶可以定義自己的數據類型,這樣應用程序在前台后台都可以處理用戶自定義數據類型。
NDEF記錄處理
Symbian實現支持多NDEF記錄處理,首先讀取第一條記錄,檢查是否有處理器(NFC DIscovery API 或者一個NFC Content Handler API 客戶端)更具記錄類型來處理數據。如果有,則停止處理,將整個NDEF消息交給特定的處理器。。 如果第一條記錄沒找到處理器,則移向第二條,重復查找過程。就是說,如果找到一個記錄的任何處理器,則整個NDE消息都交給這個處理器處理。
注意: 支持多NDEF記錄但不支持多NDEF消息。
支持的保留RTD
NFC的Symbian實現提供對一下RTD處理的支持:
RTD | Identifier |
Bluetooth 2.0 | urn:nfc:ext:nokia.com:bt |
Bluetooth 2.1 | application/vnd.bluetooth.ep.oob |
Handover Request | urn:nfc:wkt:Hr |
Handover Select | urn:nfc:wkt:Hs |
Smart Poster | urn:nfc:wkt:Sp |
URI record | urn:nfc:wkt:U |
要處理保留RTD,應用程序必須在前台,不能從后台進程讀取保留NDEF,參見 “ Nokia手機中的NFC數據處理 ”章節。
支持的MIME類型
Symbian實現可以從NFC標簽中讀取一下文件類型:
類型 | 子類型 |
image | 支持所有子類型 |
audio | 支持所有子類型 |
text | 支持所有子類型 |
video | 支持所有子類型 |
application | vnd.Nokia.ringing-tone |
application | vnd.symbian.install |
application | java-archive |
application | x-java-archive |
application | vnd.wap |