• <strike id="fdgpu"><input id="fdgpu"></input></strike>
    <label id="fdgpu"></label>
    <s id="fdgpu"><code id="fdgpu"></code></s>

  • <label id="fdgpu"></label>
  • <span id="fdgpu"><u id="fdgpu"></u></span>

    <s id="fdgpu"><sub id="fdgpu"></sub></s>
    首頁 > 投稿專欄 > 最新來稿 > 基于Android平臺(tái)的NFC技術(shù)的應(yīng)用實(shí)現(xiàn)

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

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


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

    1.NFC技術(shù)

           NFC終端有三種工作模式:
    1)主動(dòng)模式,NFC終端作為一個(gè)讀卡器,主動(dòng)發(fā)出自己的射頻場去識(shí)別和讀/寫別的NFC設(shè)備;
    2)被動(dòng)模式,NFC終端可以模擬成一個(gè)智能卡被讀寫,它只能在其它設(shè)備發(fā)出的射頻場中被動(dòng)響應(yīng);
    3)雙向模式,雙方都主動(dòng)發(fā)出射頻場來建立點(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)用程序訪問NFC功能的入口,為了獲取NFC適配器實(shí)例。
    2)NFC適配器(NFC Adapter),提供一切NFC操作,包括NFC設(shè)備開關(guān)、標(biāo)簽讀取、NDEF數(shù)據(jù)交互、NFC安全訪問、點(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)用程序中通過接受ACTION_TAG_DISCOVERED Intent來讀取NDEF消息。
    4)NDEF記錄(NDEF Record),是NDEF數(shù)據(jù)包的基本組成單元。一個(gè)NDEF數(shù)據(jù)包可以有一個(gè)或者多個(gè)NDEF記錄。

            NFC 在android架構(gòu)中采用Service和Manager基本結(jié)構(gòu)模型,通過Binder和Service通信,如圖一所示android基于Binder的IPC的基本模型是基于會(huì)話的客戶/服務(wù)器(C/S)架構(gòu)的。Android使用內(nèi)核模塊Binder來中轉(zhuǎn)各個(gè)進(jìn)程之間的會(huì)話數(shù)據(jù),它是一個(gè)字符驅(qū)動(dòng)程序,主要通過IOCTL與用戶空間的進(jìn)程交換數(shù)據(jù)。一次會(huì)話是在一個(gè)代理Binder對(duì)象和服務(wù)Binder對(duì)象之間進(jìn)行,可以在同一進(jìn)程也可以在不同進(jìn)程。會(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è)備初始化以及開關(guān),相關(guān)函數(shù)方法:
    private static synchronized INfcAdapter setupService()
    public boolean enable()
    public boolean disable()
    2)NDEF消息的讀寫和安全管理鏈接,相關(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客戶端函數(shù),通過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客戶端對(duì)應(yīng)Service函數(shù)實(shí)現(xiàn),包括INfcTag.Stub,INfcAdapter.Stub等;
    2)Service狀態(tài)管理的消息處理;
    3)Java本地接口(JNI)的Native代碼的訪問接口。

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

          NFC HAL(Hardware Abstract Layer)層,包括以下功能:
    1)底層RF控制;
    2)NFC標(biāo)簽讀寫處理以及標(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í)別開始前,確認(rèn)NFC設(shè)備使用正常,可獲取NDEF設(shè)備。NFC HAL探測到有效距離范圍內(nèi)有標(biāo)簽存在,則讀取數(shù)據(jù),向NFC Service發(fā)送標(biāo)簽識(shí)別事件,NFC Service 廣播NfcAdapter.ACTION_TAG_DISCOVERED Intent消息,應(yīng)用程序通過接受該消息即可獲取標(biāo)簽數(shù)據(jù)。


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

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

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

    上一篇:Ping命令使用指南

    下一篇:最后一頁

    分享到: 收藏

    推薦閱讀

    專題

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 台东市| 霍山县| 青岛市| 湘潭县| 利辛县| 普安县| 射阳县| 政和县| 莲花县| 鄱阳县| 楚雄市| 海原县| 武功县| 孟州市| 嘉义市| 香格里拉县| 长治县| 平远县| 山丹县| 平遥县| 崇文区| 克什克腾旗| 咸阳市| 奈曼旗| 通州区| 宜州市| 山阴县| 久治县| 连南| 兴隆县| 兴城市| 共和县| 东兴市| 新田县| 南昌市| 栾川县| 德惠市| 浙江省| 保定市| 绥芬河市| 望城县| http://444 http://444 http://444 http://444 http://444 http://444