Android Jelly Beam NFC架構及源碼分析之一

來源:互聯網
上載者:User

本文首先是一些準備資料,主要來源是度娘,在此感謝原作者。在準備資料瞭解後,及第三節開始算正式步入正題。

一、手機NFC架構

目前手機主要是S2C(SigIn-SigOut-Connection)架構,主要是避免NFC標籤(即NFC卡)與NFC裝置(即NFC讀卡機、存取器)兩者在感應時,被其他有心人士從中、從旁對傳輸資料進行攔竊。如:

 

二、Android NFC架構

 

三、NFC Service的啟動和初始化

OK,現在開始進入正題。

NFC Service本質上是一個系統APP,和Phone類似。注意在~/packages/app/Nfc/AndroidManifest.xml中設定了android:persistent="true"。所以在AM(ActivityManager)啟動後,AM會啟動NFC service.這個時候進入NFC service的啟動流程。

根據JAVA類執行個體化的順序我們知道,首先系統會建立一個NfcServiceHandler, 這個handler在服務完全啟動後承擔著主要的作用。之後會詳細的寫。

後面會執行到onCreate函數,這個時候會先執行個體化TagService,NfcAdapterService,NfcAdapterExService這三個內部類,而這三個類是分別對~/platform/frameworks/base/core/java/android/nfc下面幾個aidl的實現。其中NfcAdpaterService會在NfcService啟動後註冊到ServiceManager裡面去,暴露給其他進程一些基本的方法,如啟用和禁用NFC裝置。

之後執行個體化NativeNfcManager,這個時候就會載入JNI,然後在JNI這一層裡面建立了一個monitor(其實就是幾個semaphores, mutex 以及條件變數,這個monitor在後面用處很大,因為android nfc的操作都是非同步作業又是多線程,所以為了確保唯一性和順序性,以及阻塞線程)和一個nfc_jni_native_data這個native_data會存放NativeNfcManager這個的執行個體。事實上和JNI互動以及在應用程式層幹實事的就是NativeNfcManager。

然後會建立HandoverManager(主要是處理Handover訊息,理論上可以處理wifi和bluetooth,實際上目前主要是用來建立藍芽串連,Android目前P2p傳輸檔案其實就是通過handover建立藍芽串連,然後通過藍芽傳輸資料),NfcDispatcher以及P2pLinkManager。從名字都可以看出來NfcDispather是負責訊息的分發,P2pLinkManager是用來處理P2p連結的。這裡主要說下P2pLinkManager,它實現了兩個介面,分別是Handler.Callback和P2pEventListener.Callback,所以我們可以看到在類的建構函式中,執行個體化P2pEventManager和Handler的時候會將自身傳進去。當然這個Handler和前面的NfcServiceHandler公用一個MessageQueue和一個Looper,只是不知道兩個handleMessage是如何處理的(望知情人士講解下)。此外這一個步驟和前面一個步驟(執行個體化NativeNfcManager)是可以交換順序的。

到了這裡後會啟動安全管理模組、Access control等,內容很簡單,同時也不是重點,就略過了。這之後是將NfcAdpater註冊到ServiceManager裡面,然後是自身註冊Receiver,主要用來處理一些系統事件,如鎖屏,App安裝等。

實事上到了這裡我們的操作大部分都還是在應用程式層,最多到JNI,然而即使到了JNI我們也只是在記憶體上給兩個變數分配了空間而已,並未操作硬體,甚至於我們還不知道這個手機是否安裝的有NFC晶片。NFC裝置的初始化和真正的啟用其實到最後一句 new EnableDisableTask().execute(TASK_BOOT)才開始執行的。

 這一句首先是建立了一個非同步Task,然後開始執行啟動操作。也就說是另起了一個線程,然後開始初始化裝置。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.