Android NFC API 簡述

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">一,在android9之後開始有了NFC API。</span>

NdefRecord類,這是一個記錄類,NdefMessage是Ndef類型的Message,裏面封裝了多個NdefRecord。類中有多個相關的函數操作。


二,1,使用NFC API第一步,在Android Manifest 中設置
(1)在<uses-permission>元素中生明訪問NFC硬件的權限
<uses-permission android:name="android.permission.NFC" />


(2)確定程序支持的最小SDK版本。稍微能方便開發,流行廣,適應性強的最起碼葉的是10
<uses-sdkandroid:minSdkVersion="10" />


(3)限制apk。谷歌市場上可以限制沒有相關硬件的手機下載。
<uses-featureandroid:name="android.hardware.nfc"android:required="true" />
2,第二部,NfcAdapter的獲取
NfcAdapter意爲爲NFC適配器,常用NfcAdapter getDefaultAdapter來獲取默認的nfc適配器。


三,調度系統
1,NFC前臺調度系統
書上說,實現 一些設計需要在前臺呈現的頁面中直接獲取或推送NFC信息。嗯,那就是說,我掃了一個標籤,跳到一個activity中進行處理,跳到其它activity等,然後再掃,就繼續回到activity中處理,而不用重新打開app。是不是說嫂標籤的時候那個activity要說明,先跳到掃的界面,然後再真掃,就直接除了,就是說告訴app我要掃了,那個標籤過來。程序主動。
2,NFC標籤調度系統
在非鎖屏,相關設備開啓時,掃到標籤就開始尋找啓動應用程序。
流程:
解析NFC標籤並搞清楚標籤中表示數據負載的MIME類型或URI,
把MIME類型或URI以及數據負載封裝到一個Intent中
基於Intent來啓動Activity。
3,區別
藉助網友問題:緊急求大神幫解決個問題:一個app中,在可以掃描標籤的activity中,掃描標籤,調到另一個activity來顯示一些信息。這時再掃描標籤,手機重新打開這個app!希望是關閉當前activity,回到上一activity,再進行掃標籤
那要有一個activity負責讀標籤,然後手動回到那個標籤,在進行掃描,由於讀標籤的activity處理Intent的優先級比其他的高,所以就不用退出app了。NFC前臺調度系統就是app起主導作用,在app界面主動掃描,並攔截Intent。標籤調度系統就是標籤主導,在非鎖屏狀態下nfc適配器掃描到nfc標籤時,尋找對應的應用程序,這樣就得重新啓動app了。而NFC前臺調度型是定製activity攔截Intent。
4,NFC標籤類型
標籤調度系統頂以三種Intent對象,我感覺NDEF比較好,很通用
ACTION_NDEF_DISCOVERED,  ACTION_TECH_DISCOVERED,  ACTION_TAB_DISCOVERED

四,NFC Intent過濾器
NDEF差不多有uri,text,absolute_uri, external, mime_media 四個小類型,
我們這個東西用text就行了。


五,AAR,
android application record.從android4.0開始引入(api14)。
作用,掃描到的標籤只是想讓固定的程序打開。這通過Intent是無法實現的。而且當這個程序不存在是的時候,會自動從google play上面下載。
與Intent區別:
AAR在應用程序級別,Intent在activity級別。AAR只能有一個,Intent可以有多個對應。AAR還可以從google play上面下載應用。AAR在安卓4.0纔有,Intent從2.2就有了。
使用很簡單,在Ndefmessage中的最後加上一個AAR 記錄就好了

String packageName = "com.duola.nfc";//package nameNdefMessage msg = new NdefMessage( new NdefRecord[]{ record1, record2,....... NdefRecord.createApplicationRecord(packageName) });


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章