摘 要:近年來,近場(chǎng)通信(NFC)技術(shù)成為最具競爭力的短距離無線通信技術(shù)之一。本文簡要介紹了近場(chǎng)通信的概念和不同應(yīng)用領(lǐng)域中的基本應(yīng)用類型。闡述了Android移動(dòng)平臺(tái)下NFC應(yīng)用是讀取NDEF標(biāo)簽和發(fā)送數(shù)據(jù)。并詳細(xì)介紹了Android環(huán)境下對(duì)于NFC標(biāo)簽的調(diào)度與NDEF標(biāo)簽的讀取。
關(guān)鍵詞:NFC,Android移動(dòng)平臺(tái);NDEF標(biāo)簽;應(yīng)用研究
中圖分類號(hào):TP391.7
1 NFC與Android平臺(tái)
近場(chǎng)通信(Near Field Communication,NFC),又稱近距離無線通信,是一種基于標(biāo)準(zhǔn)的近距離無線連接技術(shù),能夠在多電子設(shè)備之間實(shí)現(xiàn)簡單而安全的雙向交互,當(dāng)兩臺(tái)NFC兼容的設(shè)備彼此距離為十幾厘米遠(yuǎn)時(shí),它們之間就可進(jìn)行通信[1]。這個(gè)技術(shù)由免接觸式射頻識(shí)別(RFID)演變而來,并向下兼容RFID,最早由Sony和Philips各自開發(fā)成功,主要用于手機(jī)等手持設(shè)備中提供M2M(Machine to Machine)的通信。
NFC的數(shù)據(jù)傳輸特點(diǎn),決定了它可以與移動(dòng)互聯(lián)網(wǎng)相互融合,促進(jìn)互聯(lián)網(wǎng)的發(fā)展,甚至給某些應(yīng)用領(lǐng)域帶來革命。在2011年基于Android操作系統(tǒng)的首款NFC近場(chǎng)通信應(yīng)用就已經(jīng)推出,并獲得好評(píng),隨后,很多款采用Android系統(tǒng)的高端手機(jī)都將NFC作為標(biāo)配。NFC在Android平臺(tái)的應(yīng)用主要體現(xiàn)在允許在NFC標(biāo)簽和Android設(shè)備之間或兩個(gè)Android設(shè)備之間共享小的數(shù)據(jù)的負(fù)載。
2 NFC應(yīng)用領(lǐng)域
NFC設(shè)備可以用作非接觸式智能卡、智能卡的讀寫器終端以及設(shè)備對(duì)設(shè)備的數(shù)據(jù)傳輸鏈路[2]。NFC技術(shù)支持多種應(yīng)用,其主要應(yīng)用可以分為五種基本類型。
(1)智能卡片:使用NFC標(biāo)簽來取代現(xiàn)有的卡,將其貼在終端上,即可完成非接觸卡所能實(shí)現(xiàn)的功能。
(2)掃描碼:用戶使用帶有NFC讀卡器的移動(dòng)設(shè)備可以讀取帶有NFC標(biāo)簽的海報(bào)信息。較為典型的應(yīng)用是將帶有NFC標(biāo)貼在宣傳海報(bào)上,用戶可將持有NFC讀卡器的移動(dòng)設(shè)備貼近標(biāo)簽,瞬間完成一系列設(shè)定的功能。
(3)無接觸支付:由于NFC標(biāo)簽帶有密碼安全認(rèn)證的高安全性,用戶可以使用帶有NFC標(biāo)簽的移動(dòng)設(shè)備進(jìn)行移動(dòng)支付等操作。
(4)數(shù)據(jù)傳輸:NFC設(shè)備之間能夠?qū)崿F(xiàn)數(shù)據(jù)連接和數(shù)據(jù)傳輸,如數(shù)據(jù)文件傳輸、識(shí)別,交換,數(shù)據(jù)處理等操作。
(5)與移動(dòng)互聯(lián)網(wǎng)深度融合:NFC通過與射頻技術(shù)和信息網(wǎng)絡(luò)技術(shù)融合,成為一個(gè)嶄新的開放性系統(tǒng),將會(huì)對(duì)人們的生產(chǎn)生活產(chǎn)生重大影響,將NFC應(yīng)用于現(xiàn)有的消費(fèi)管理系統(tǒng)、商業(yè)促銷系統(tǒng)、物流管理系統(tǒng)等各種系統(tǒng)中,也將會(huì)對(duì)系統(tǒng)的功能產(chǎn)生巨大變革。
3 NDEF標(biāo)簽
簡單的NFC標(biāo)簽只能提供與讀/寫相關(guān)的語法。復(fù)雜的NFC標(biāo)簽不僅能夠執(zhí)行數(shù)學(xué)運(yùn)算和交互代碼,而且還能在訪問扇區(qū)時(shí)進(jìn)行加密處理。大多數(shù)的Android框架API都使用基于NDEF的標(biāo)準(zhǔn)格式存儲(chǔ)標(biāo)簽中的數(shù)據(jù)。
在Android平臺(tái)中對(duì)NFC的應(yīng)用主要是解決從NFC標(biāo)簽中讀取NDEF數(shù)據(jù)和將NDEF消息從一個(gè)設(shè)備發(fā)送給另一個(gè)設(shè)備。除非是在移動(dòng)設(shè)備的設(shè)置菜單中NFC被禁用,否則Android設(shè)備會(huì)在非鎖屏的狀態(tài)下搜索NFC?然后被檢測(cè)到的NFC標(biāo)簽會(huì)由標(biāo)簽調(diào)度系統(tǒng)對(duì)收集到的數(shù)據(jù)進(jìn)行處理?目標(biāo)應(yīng)用程序需要聲明一個(gè)Intent過濾器,并且需要發(fā)送處理數(shù)據(jù)的請(qǐng)求,才可以掃描到NFC標(biāo)簽。
4 標(biāo)簽調(diào)度
4.1 映射MIME數(shù)據(jù)類型和URI
當(dāng)Android設(shè)備掃描到包含NDEF格式數(shù)據(jù)的NFC標(biāo)簽時(shí),它會(huì)解析數(shù)據(jù)的MIME類型或URI標(biāo)識(shí)?系統(tǒng)首先會(huì)讀取消息中的第一條NdefRecord,來判斷如何解釋整個(gè)NDEF消息?使用TNF和類型字段,標(biāo)簽調(diào)度系統(tǒng)試圖讓MIME類型或URI映射到NDEF消息標(biāo)簽中。如果成功的話,它會(huì)把加載信息與實(shí)際的一塊封裝在ACTION_NEDF_DISCOVERED類型的Intent中。然而,會(huì)有標(biāo)簽調(diào)度系統(tǒng)不能根據(jù)第一條NDEF記錄的數(shù)據(jù)類型來判斷,所以會(huì)有NDEF數(shù)據(jù)不能被映射到MIME或URI,或NFC標(biāo)簽中不包含NDEF數(shù)據(jù)的情況發(fā)生。
4.2 調(diào)度NFC標(biāo)簽
當(dāng)標(biāo)簽調(diào)度系統(tǒng)創(chuàng)建NFC標(biāo)簽和封裝的Intent對(duì)象時(shí),如果有多個(gè)應(yīng)用程序能夠處理該Intent對(duì)象,用戶可以選擇Activity。下面介紹了標(biāo)簽調(diào)度系統(tǒng)定義的三種Intent對(duì)象。
(1)ACTION_NDEF_DISCOVERED:這種Intent用于啟動(dòng)包含NDEF負(fù)載和已知類型的標(biāo)簽的Activity。這是最高優(yōu)先級(jí)的Intent,并且標(biāo)簽調(diào)度系統(tǒng)在任何其他Intent之前,都會(huì)盡可能的嘗試使用這種類型的Intent來啟動(dòng)Activity。
(2)ACTION_TECH_DISCOVERED:如果沒有注冊(cè)處理ACTION_NDEF_DISCOVERED類型的Intent的Activity,那么標(biāo)簽調(diào)度系統(tǒng)會(huì)嘗試使用這種類型的Intent來啟動(dòng)應(yīng)用程序。如果被掃描到的標(biāo)簽包含了不能被映射到MIME類型或URI的NDEF數(shù)據(jù),或者沒有包含NDEF數(shù)據(jù),但是是已知的標(biāo)簽技術(shù),那么也會(huì)直接啟動(dòng)這種類型的Intent對(duì)象。
(3)ACTION_TAB_DISCOVERED:如果沒有處理ACTION_NDEF_DISCOVERED或ACTION_TECH_DISCOVERED類型的Intent的Activity,就會(huì)啟動(dòng)這種類型的Intent。
4.3 設(shè)定訪問權(quán)限
在訪問設(shè)備的NFC硬件和正確的處理NFC的Intent之前,要在文件中進(jìn)行兩個(gè)方面的聲明。
(1)NFC硬件訪問權(quán)限的聲明:
(2)最小SDK版本的聲明:API Level 9只通過ACTION_TAG_DISCOVERED來支持有限的標(biāo)簽調(diào)度,并且只能通過EXTRA_NDEF_MESSAGES來訪問NDEF消息。API Level 10中包含了廣泛的讀寫支持,從而更好的推動(dòng)了NDEF的應(yīng)用前景,并且API Leve 14用Android Beam和額外的方便的創(chuàng)建NDEF記錄的方法,向外提供了更容易的把NDEF消息推送給其他設(shè)備的方法。
5 讀取NDEF類型的Intent
在應(yīng)用程序的Android清單中可以針對(duì)一種、兩種或全部三種類型的NFC的Intent進(jìn)行過濾。但是,通常要在應(yīng)用程序啟動(dòng)時(shí)控制最常用的ACTION_NDEF_DISCOVERED類型的Intent。
要想從Intent中獲取被掃描到的NFC標(biāo)簽的相關(guān)信息,就需要Intent成功啟動(dòng)一個(gè)Activity。對(duì)掃描到的標(biāo)簽進(jìn)行分析,從而使Intent對(duì)象獲得額外的信息。其中,EXTRA_TAG代表了被掃描到的標(biāo)簽的Tag對(duì)象;EXTRA_NDEF_MESSAGES表示一個(gè)解析來自標(biāo)簽中的NDEF消息的數(shù)組,這個(gè)附加信息是強(qiáng)制在Intent對(duì)象上的;EXTRA_ID表示標(biāo)簽的低級(jí)ID。檢查ACTION_NDEF_DISCOVERED類型的Intent,并從Intent對(duì)象的附加信息中獲取NDEF消息。
6 結(jié)束語
信息時(shí)代的到來,各大廠家也都在爭用先進(jìn)技術(shù),但是NFC技術(shù)只是在高端Android手機(jī)上出現(xiàn),由于設(shè)備的規(guī)則沒有一個(gè)統(tǒng)一的標(biāo)準(zhǔn),安全系數(shù)不是很高等因素,NFC技術(shù)的發(fā)展之路也不是一帆風(fēng)順。由于基礎(chǔ)設(shè)施等原因?qū)е绿O果公司也沒有在iPhone中添加NFC模塊。但是,這并不能說明NFC未來的發(fā)展前景是不好的,它的芯片成本低,很容易將其于貼附于手機(jī)電池外殼上,通過該技術(shù),現(xiàn)在風(fēng)傳的手機(jī)支付,手機(jī)公交,手機(jī)門禁等等,都可以通過手機(jī)實(shí)現(xiàn)。
參考文獻(xiàn):
[1]韓露,桑亞樓.NFC技術(shù)及其應(yīng)用[J].近距離無線通信技術(shù),2008(06):26-30.
[2]李娟.NFC技術(shù)的校園應(yīng)用方案分析[J].物聯(lián)網(wǎng)技術(shù),2013(09):45-49.
[3]王惟杰,陳金鷹,朱軍.NFC技術(shù)及其應(yīng)用前景[J].通信與信息技術(shù),2013(206):67-69.
[4]石旭東.基于Android平臺(tái)的NFC技術(shù)的研究與實(shí)現(xiàn)[J].軟件,2013(01):65-68.
作者簡介:石韻(1990-),女,河北廊坊人,研究生,研究方向:計(jì)算機(jī)應(yīng)用技術(shù)。
作者單位:天津師范大學(xué),天津 300387