首頁(yè) > 投稿專(zhuān)欄 > 最新來(lái)稿 > 基于Android平臺(tái)的NFC技術(shù)的應(yīng)用實(shí)現(xiàn)

基于Android平臺(tái)的NFC技術(shù)的應(yīng)用實(shí)現(xiàn)

   作者:Anhui OSS   來(lái)源:http://www.anhuioss.com/cn/tips/15/tip15.html   評(píng)論:0  點(diǎn)擊:


        近距離無(wú)線通信(NFC)是一種簡(jiǎn)單的,非觸控式的互聯(lián)技術(shù),可以讓消費(fèi)者簡(jiǎn)單直觀的交換信息,訪問(wèn)內(nèi)容和服務(wù),在電子消費(fèi)領(lǐng)域有著廣泛的應(yīng)用。NFC整合非接觸式讀卡器、非接觸式智能卡和點(diǎn)對(duì)點(diǎn)(Peer-to-Peer)通信功能,為消費(fèi)者開(kāi)創(chuàng)全新便捷生活方式。

1.NFC技術(shù)

       NFC終端有三種工作模式:
1)主動(dòng)模式,NFC終端作為一個(gè)讀卡器,主動(dòng)發(fā)出自己的射頻場(chǎng)去識(shí)別和讀/寫(xiě)別的NFC設(shè)備;
2)被動(dòng)模式,NFC終端可以模擬成一個(gè)智能卡被讀寫(xiě),它只能在其它設(shè)備發(fā)出的射頻場(chǎng)中被動(dòng)響應(yīng);
3)雙向模式,雙方都主動(dòng)發(fā)出射頻場(chǎng)來(lái)建立點(diǎn)對(duì)點(diǎn)的通信。

2.Android NFC架構(gòu)

       android系統(tǒng)為了支持NFC功能,允許應(yīng)用程序讀取標(biāo)簽中的數(shù)據(jù),并以NDEF(NFC Data Exchange Format)消息格式進(jìn)行交互。標(biāo)簽還可以是另外一個(gè)設(shè)備,即NFC設(shè)備工作在卡模擬模式。
NFC軟件架構(gòu)中定義的數(shù)據(jù)結(jié)構(gòu):
1)NFC管理器(NFC Manager),提供給應(yīng)用程序編程接口,作為應(yīng)用程序訪問(wèn)NFC功能的入口,為了獲取NFC適配器實(shí)例。
2)NFC適配器(NFC Adapter),提供一切NFC操作,包括NFC設(shè)備開(kāi)關(guān)、標(biāo)簽讀取、NDEF數(shù)據(jù)交互、NFC安全訪問(wèn)、點(diǎn)對(duì)點(diǎn)通信等。
3)NDEF消息(NDEF Message),是設(shè)備和標(biāo)簽之間傳遞的數(shù)據(jù)標(biāo)準(zhǔn)封裝格式,是由一個(gè)或多個(gè)NDEF數(shù)據(jù)記錄組成,在應(yīng)用程序中通過(guò)接受ACTION_TAG_DISCOVERED Intent來(lái)讀取NDEF消息。
4)NDEF記錄(NDEF Record),是NDEF數(shù)據(jù)包的基本組成單元。一個(gè)NDEF數(shù)據(jù)包可以有一個(gè)或者多個(gè)NDEF記錄。

        NFC 在android架構(gòu)中采用Service和Manager基本結(jié)構(gòu)模型,通過(guò)Binder和Service通信,如圖一所示android基于Binder的IPC的基本模型是基于會(huì)話(huà)的客戶(hù)/服務(wù)器(C/S)架構(gòu)的。Android使用內(nèi)核模塊Binder來(lái)中轉(zhuǎn)各個(gè)進(jìn)程之間的會(huì)話(huà)數(shù)據(jù),它是一個(gè)字符驅(qū)動(dòng)程序,主要通過(guò)IOCTL與用戶(hù)空間的進(jìn)程交換數(shù)據(jù)。一次會(huì)話(huà)是在一個(gè)代理Binder對(duì)象和服務(wù)Binder對(duì)象之間進(jìn)行,可以在同一進(jìn)程也可以在不同進(jìn)程。會(huì)話(huà)是一個(gè)同步操作,由代理Binder對(duì)象發(fā)起請(qǐng)求,一直要等到服務(wù)Binder對(duì)象將回復(fù)傳遞給代理Binder對(duì)象才算完成。

3.NFC Adapter的實(shí)現(xiàn)
  

      NFC Adapter主要實(shí)現(xiàn)的功能如下:
1)設(shè)備初始化以及開(kāi)關(guān),相關(guān)函數(shù)方法:
private static synchronized INfcAdapter setupService()
public boolean enable()
public boolean disable()
2)NDEF消息的讀寫(xiě)和安全管理鏈接,相關(guān)函數(shù)方法:
public void setLocalNdefMessage(NdefMessage message)
public NdefMessage getLocalNdefMessage()
public NdefSecureElement createNdefSecureElementConnection()
3)P2P的后臺(tái)通信 ,相關(guān)函數(shù)方法:
public void enableForegroundNdefPush(Activity activity,NdefMessage message)
public void disableForegroundNdefPush(Activity activity)
       這些基本函數(shù)都是NFC Binder客戶(hù)端函數(shù),通過(guò)Binder IPC調(diào)用Service 對(duì)應(yīng)的函數(shù)進(jìn)行通信處理。

4.NFC Server的實(shí)現(xiàn)

      NFC Service主要實(shí)現(xiàn)以下功能:
1)Adapter中的Binder客戶(hù)端對(duì)應(yīng)Service函數(shù)實(shí)現(xiàn),包括INfcTag.Stub,INfcAdapter.Stub等;
2)Service狀態(tài)管理的消息處理;
3)Java本地接口(JNI)的Native代碼的訪問(wèn)接口。

5. NFC HAL實(shí)現(xiàn)

      NFC HAL(Hardware Abstract Layer)層,包括以下功能:
1)底層RF控制;
2)NFC標(biāo)簽讀寫(xiě)處理以及標(biāo)簽?zāi)M;
3)點(diǎn)對(duì)點(diǎn)通信;
4)同單總線的SIM卡或者其它安全設(shè)施通信;
5)對(duì)基于Felica,Mifare和ISO14443的RFID標(biāo)簽做兼容處理。

6.標(biāo)簽識(shí)別

        在標(biāo)簽識(shí)別開(kāi)始前,確認(rèn)NFC設(shè)備使用正常,可獲取NDEF設(shè)備。NFC HAL探測(cè)到有效距離范圍內(nèi)有標(biāo)簽存在,則讀取數(shù)據(jù),向NFC Service發(fā)送標(biāo)簽識(shí)別事件,NFC Service 廣播NfcAdapter.ACTION_TAG_DISCOVERED Intent消息,應(yīng)用程序通過(guò)接受該消息即可獲取標(biāo)簽數(shù)據(jù)。


7.NFC簡(jiǎn)單代碼實(shí)現(xiàn)

Manifest文件的權(quán)限配置:

相關(guān)熱詞搜索: Android 平臺(tái) NFC

上一篇:Ping命令使用指南

下一篇:最后一頁(yè)

分享到: 收藏

推薦閱讀

專(zhuān)題