Nfc學習之一

1、寫在前面的話
近來因爲項目需求須要搞Nfc這一塊,以前在上家公司帶LC(本地鏈接)組時也接觸過一些Nfc,在Android系統中也解過一些bug,可是不夠系統,如今正比如較系統的學習Nfc。

2、Nfc的代碼框架
1.框架簡圖
                     App
                      |
                    Framework
                      |
                     hal
                      |
                   nxp/nci庫
                      |
                    Driver
                      |
                     Chip
2.代碼目錄和成果物

1)packages/apps/Settings
packages/apps/Settings/src/com/android/settings/Settings.java
packages/apps/Settings/src/com/android/settings/nfc/*

編譯成果物:Settings.apk
主要用於用戶交互:開啓/關閉 nfc和androidBeam

2)packages/apps/Tag
packages/apps/Tag/*

編譯成果物:Tag.apk
主要用於讀取Tag信息時的處理,如讀取mms信息後啓動mms應用。

2)packages/app/Nfc
packages/apps/Nfc/*

編譯成果物:Nfc.apk libnfc_jni.so
該目錄下分nci和nxp分別表明兩個chip vender。

3)frameworks/base/core/java/android/nfc
frameworks/base/core/java/android/nfc/*

編譯成果物:framewrok.jar

4)external/libnfc-nxp
external/libnfc-nxp/*
external/libnfc-nci/*

編譯成果物:libnfc.so libnfc_ndef.so

3.實現邏輯

1)系統啓動時,ActivityManagerService會啓動Nfc.apk(系統級應用)NfcApplication.java,onCreate()時構造NfcService實例,在構造函數中註冊NfcAdapterService binder服務:

ServiceManager.addService(SERVICE_NAME, mNfcAdapter)
能夠經過binder機制獲取服務。

2)NfcManager實例化:
ContexImpl.java
static {
...
registerService(NFC_SERVICE, new ServiceFetcher() {
                public Object createService(ContextImpl ctx) {
                    return new NfcManager(ctx);
                }});
...
}

3)關鍵類
 
                       ——  -> NativeNfcManager Nfc設備接口
                      |    -> NfcAdapterService(給上層應用的接口)
                      |    -> P2pLinkManager -> P2pEventManager(監聽p2p連接事件) -> SendUi(Android Beam/HandOver功能在兩個Nfc設備之間共享數據如:聯繫人、URL、圖片、音視頻文件等)
                      |                      -> NdefPushServer
                      |                      -> SnepServer     這三個Server用於開啓Android Beam功能時啓動的監聽線程
NfcService(服務管理類) |        -> HandoverServer
                      |    -> NfcDispatcher 處理Nfc事件如讀取Tag信息後啓動相應的app
                      |    -> CardEmulationService 卡模擬功能
                      |    -> HostEmulationManager Kitkat新增的類實現手機「效仿」物理磁卡(HCE)進行支付的功能
                      |    -> NativeNfcSecureElement 安全認證單元
                       ——

3、Android 4.4 Kitkat新特性
一、KitKat 加強了 NFC 功能,儘管 NFC 功能遭到一些反對或者運營商的排斥,可是谷歌對 NFC 一直抱有美好的願景。新的 NFC 將具有「效仿」物理磁卡(HCE)進行支付的功能,可經過加密方式讓手機直接模擬信用卡、會員卡等磁卡,直接進行交易支付,無需任何安全控件和繁雜的步驟。

待續...java

相關文章
相關標籤/搜索