Android 2.3.3 近場通信NFC介紹

2021-01-07 電子產品世界

NFC( 近場通信 )

本文引用地址:http://www.eepw.com.cn/article/155082.htm

NFC 是一套短距離的無線通信,通常距離是 4 釐米或更短。 NFC 工作頻率是 13.56M Hz, 傳輸速率是 106kbit/s 到848kbit/s. NFC 總是在一個發起者和一個被動目標之間發生。發起者發出近場無線電波,這個近場可以給被動目標供電。這些被動的目標包括不需要電源的標籤,卡,也可以是有電源的設備。

與其他無線通信技術比較, 例如藍牙和 WiFi , NFC 提供更低貸款和距離,並且低成本,不需要供電,不需要實現匹配,整個通信過程僅僅是短短的靠近一秒就能完成。

一個帶有 NFC 支持的 android 設備通常是一個發起者。也可以作為 NFC 的讀寫設備。他將檢測 NFC tags 並且打開一個Activity 來處理 . Android 2.3.3 還有支持有限的 P2P 。

Tags 分很多種,其中簡單的只提供讀寫段,有的只能讀。複雜的 tags 可以支持一些運算,加密來控制對 tags 裡數據段的讀寫。甚至一些 tags 上有簡單的作業系統,允許一些複雜的交互和可以執行一些代碼。

API 概覽

Android.nfc package 包含頂層類用來與本地 NFC 適配器交互 . 這些類可以表示被檢測到的 tags 和用 NDEF 數據格式。

android.nfc.techpackage 包含那些對 tag 查詢屬性和進行 I/O 操作的類。這些類分別標示一個 tag 支持的不同的NFC 技術標準。

聲明 Android Manifest.xml 的元素

在你能訪問一個設備的 NFC 硬體和正確的處理 NFC 的 Intent 之前,需要在 AndroidManifest.xml 中先聲明下面的項:

1. NFC 使用 元素來訪問 NFC 硬體 :

2. 最小 SDK 版本需要設置正確, API level 9 只包含有限的 tag 支持 , 包括:

. 通過 ACTION_TAG_DISCOVERED來發布 Tag 信息

. 只有通過 EXTRA_NDEF_MESSAGES擴展來訪問 NDEF 消息

. 其他的 tag 屬性和 I/O 操作都不支持

所以你可能想要用 API level 10 來實現對 tag 的廣泛的讀寫支持。

3. uses-feature 元素定義:你的程序可以再 android 市場裡顯示有 NFC 硬體。

4. NFC intent filter 告訴 android 系統你的 activity 能處理 NFC 數據,可以定義 1 個或多個 intent filter :

android:resource = @xml/nfc_tech_filter .xml />

上邊 3 個 intent filters 有優先級,更多信息可以看下面的 Tag 發布系統

也可以看 NFCDemo 例子的 AndroidManifest.xml 來有個更深的理解。

Tag 發布系統

當 android 設備掃描到一個 NFC tag ,通用的行為是自動找最合適的 Activity 會處理這個 tag Intent 而不需要用戶來選擇哪個 Activity 來處理。因為設備掃描 NFC tags 是在很短的範圍和時間,如果讓用戶選擇的話,那就有可能需要行動裝置,這樣將會打斷這個掃描過程。你應該開發你只處理需要處理的 tags 的 Activity ,以防止讓用戶選擇使用哪個 Activity來處理的情況。 Android 提供兩個系統來幫助你正確的識別一個 NFC tag 是否是你的 Activity 想要處理的: Intent 發布系統和前臺 Activity 發布系統。

Intent 發布系統檢查所有 Activities 的 intent filters ,找出那些定義了可以處理此 tag 的 Activity ,如果有多個 Activity 都配置了處理同一個 tag Intent ,那麼將使用 Activity 選擇器來讓用戶選擇使用哪個 Activity 。用戶選擇之後,將使用選擇的 Activity 來處理此 Intent .

前臺發布系統允許一個 Activity 覆蓋掉 Intent 發布系統而首先處理此 tag Intent ,這要求你將要處理 Tag Intent 的 Activity運行在前臺,這樣當一個 NFC tag 被掃描到,系統先檢測前臺的 Activity 是否支持處理此 Intent ,如果支持,即將此Intent 傳給此 Activity ,如果不支持,則轉到 Intent 發布系統。

使用 Intent 發布系統

Intent 發布系統指定了 3 個 intent 有不同的優先級。通常當一個 tag 被檢測到之後, Intent 就被啟動( start )了,這個啟動遵循以下行為 :

· android.nfc.action.NDEF_DISCOVERED : 這個 intent 是在一個包含 NDEF 負載的 tag 被檢測到時啟動,這是最高優先級的 intent, android 系統不會讓你指定一個 Intent 能處理所有的 NFC 數據類型,你必須在AndroidManifest.xml 中指定與 NFC tag 對應的 元素,這樣當掃描到的 tag 傳過來的數據類型與你定義的相匹配時,你的 Activity 就會被調用。例如想處理一個包含 plain text 的 NDEF_DISCOVERED intent ,你要按照如下定義AndroidManifest.xml file:

如果 NDEF_DISCOVERED intent 已經被啟動, TECH_DISCOVERED 和 TAG_DISCOVERED intents 將不會被啟動。假如一個未知的 tag 或者不包含 NDEF 負載的 tag 被檢測到,此 Intent 就不會被啟動。

· android.nfc.action.TECH_DISCOVERED : 如果 NDEF_DISCOVERED intent 沒啟動或者沒有一個 Activity 的filter 檢測 NDEF_DISCOVERED ,並且此 tag 是已知的,那麼此 TECH_DISCOVERED Intent 將會啟動 .TECH_DISCOVERED intent 要求你在一個資源文件裡 (xml) 裡指定你要支持 technologies 列表。更多細節請看下面的Specifying tag technologies to handle .

· android.nfc.action.TAG_DISCOVERED : 如果沒有一個 activity 處理 _DISCOVERED and TECH_DISCOVEREDintents 或者 tag 被檢測為未知的,那麼此 Intent 將會被啟動。

Specifying tag technologies to handle 指定處理的 technologies

假如你的 Activity 在 AndroidManifest.xml 文件裡聲明了處理 android.nfc.action.TECH_DISCOVERED intent,你必須創建一個 Xml 格式的資源文件,並加上你的 activity 支持的 technologies 到 tech-list 集合裡。這樣你的 activity將被認作能處理這些 tech-list 的處理者,如果 tag 使用的 technology 屬於你的定義的 list 裡,你的 Activity 將接收此Intent 。你可以用 getTechList() 來獲得 tag 支持的 technologies 。

例如:如果一個 tag 被檢測到支持 MifareClassic, NdefFormatable, 和 NfcA ,你的 tech-list 集合必須指定了其中的一項或者多項來保證你的 Activity 能處理此 Intent 。

下面是一個資源文件例子,定義了所有的 technologies. 你可以根據需要刪掉不需要的項,將此文件以任意名字 +.xml 保存到 /res/xml 文件夾 .

asis:names:tc:xliff:document:1.2 >

android.nfc.tech.IsoDep

android.nfc.tech.NfcA

android.nfc.tech.NfcB

android.nfc.tech.NfcF

android.nfc.tech.NfcV

android.nfc.tech.Ndef

android.nfc.tech.NdefFormatable

android.nfc.tech.MifareClassic

android.nfc.tech.MifareUltralight

你也可以指定多個 tech-list 集合,每個集合都認做獨立的。如果任何單個 tech-list 集合是 getTechList() 返回的technologies 集合的子集,那麼你的 Activity 將被認為匹配了。這個還提供 』 與 』 和 』 或 』 操作。下面的例子表示支持NfcA 和 NDef 的卡,或者支持 NfcB 和 NDef 的卡:

asis:names:tc:xliff:document:1.2 >

android.nfc.tech.NfcA

android.nfc.tech.Ndef

asis:names:tc:xliff:document:1.2 >

android.nfc.tech.NfcB

android.nfc.tech.Ndef

在 AndroidManifest.xml 文件中 , 指定這個 tech-list 資源文件的方法是在 元素中創建 元素,例如下面例子 :

...

android:resource = @xml/nfc_tech_filter />

...

使用前臺發布系統 Using the foreground dispatch system

前臺發布系統允許一個 Activity 攔截一個 tag Intent 獲得最高優先級的處理,這種方式很容易使用和實現:

1. 添加下列代碼到 Activity 的 onCreate() 方法裡

a. 創建一個 PendingIntent對象 , 這樣 Android 系統就能在一個 tag 被檢測到時定位到這個對象

PendingIntent pendingIntent = PendingIntent . getActivity (

this , 0 , new Intent ( this , getClass ()). addFlags ( Intent .FLAG_ACTIVITY_SINGLE_TOP ), 0 );

b. 在 Intent filters 裡聲明你想要處理的 Intent ,一個 tag 被檢測到時先檢查前臺發布系統,如果前臺 Activity 符合Intent filter 的要求,那麼前臺的 Activity 的將處理此 Intent 。如果不符合,前臺發布系統將 Intent 轉到 Intent 發布系統。如果指定了 null 的 Intent filters ,當任意 tag 被檢測到時,你將收到 TAG_DISCOVERED intent 。因此請注意你應該只處理你想要的 Intent 。

相關焦點

  • 無線近場通訊NFC使能
    NFC Enable認識NFC系統是如何工作的,最好的方法莫過於熟悉NFC各個流程,本篇就介紹下NFC使能的流程。NFC的上層服務 com.android.nfc 啟動隨著使能整個NFC系統,通過JNI層的 NativeNfcManager.nfcManager_doInitialize()初始化底層的相關so庫。整個使能的過程中,需要記住層層向下設置的回調函數,這些回調都是以後底層數據上報的通路。
  • Android NFC架構分析
    /frameworks/base/core/java/android/nfc/./frameworks/base/core/java/android/nfc/tech./frameworks/base/core/java/com/android/internal/nfc/./external/libnfc-nxp.
  • 蘋果手機nfc功能在哪裡開啟 蘋果手機刷公交卡怎麼辦理 蘋果nfc...
    開啟設置方法 1、在手機中打開【設置】按鈕; 2、進入設置頁面之後,選擇【錢包與Apple Pay】,點擊進入; 3、在錢包與Apple Pay界面中,點擊【添加信用卡、借記卡或交通卡】; 4、然後選擇卡片類型,選擇自己已有的銀行卡; 5、選擇充值金額,充值結束後即開啟NFC功能。
  • 蘋果手機nfc功能怎麼打開 NFC和藍牙的區別【圖文】
    3、近場通信,英語:Near Field Communication,簡稱NFC,又稱近距離無線通信,是一種短距離的高頻無線通信技術,允許電子設備之間進行非接觸式點對點數據傳輸,在十釐米、3.9英吋內交換數據。
  • nfc功能是什麼意思 怎麼開啟nfc功能 手機打開nfc有什麼風險
    nfc功能是什麼意思?如今的智慧型手機大部分都支持nfc功能,那麼所謂的nfc功能,具體指什麼呢?若是想要開啟nfc功能,那麼怎麼開啟nfc功能呢?另外手機打開nfc功能是否安全呢?手機打開nfc有什麼風險沒有?帶著所有的疑問,下面看下關於nfc功能的介紹,具體了解一下nfc功能。一、nfc功能是什麼意思1、nfc功能是什麼意思?
  • Android NFC P2P開發基礎
    ) { super.onCreate(savedInstanceState); NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this); if (nfcAdapter == null) return; // NFC not available on this device nfcAdapter.setNdefPushMessage(ndefMessage
  • 蘋果6nfc功能怎麼開啟 在哪裡開啟【圖文】
    而此前的iPhone5s/5/4s等蘋果智慧型手機均不支持NFC功能,不過此次蘋果推出了全新的Apple Pay安全支付功能,該功能需要藉助NFC、TouchID、 Passbook等實現安全近場支付,所以iPhone6是支持NFC功能的。
  • OPPO R11支持nfc嗎?OPPO R11支持otg嗎?
    OPPO R11支持nfc嗎?OPPO R11支持otg嗎?這是目前很多朋友關注的話題,確實自從OPPO R11上市以來,這款機器受到很多網友關注,nfc也就是近距離無線通信的意思,那麼OPPO R11支持nfc嗎?OPPO R11支持otg嗎?下面就來簡單介紹一下。
  • 什麼是NFC?近場通信用途,晶片,標籤和閱讀器介紹
    在本文中,我們將介紹什麼是NFC,它的用途,使用NFC的一些創造性方法等等。什麼是NFC,它如何運作?NFC代表近場通信。這是設備之間非常近距離進行無線通信的標準。數據傳輸與通常在讀取器和標籤之間進行單向通信的RFID不同,NFC允許雙向通信。如果同時觸摸兩個設備,某些電話可以使用NFC在兩個設備之間傳輸聯繫人或照片之類的數據。
  • 配有NFC近場通信 Matrix AF62藍牙耳機
    由海恩耳機新引進的美國耳機品牌MEElectronics,就有專為無線聆聽設計的Air-Fi系列,這次要介紹的就是該系列當中的Matrix AF62藍牙耳罩耳機(以下簡稱Matrix),搭載藍牙3.0無線傳輸技術,不論是iPhone、iPod、Android或是PC只要您的裝置具備藍牙傳輸能力就無線傳輸音樂,而且Matrix具備NFC近場通訊功能,只要將隨身訊源跟手機貼近一下子就可以自動完成配對
  • 阿里將NFC的通信距離從20釐米擴至3米
    近日有媒體報導阿里巴巴近期在網絡通信領域有了大進展,自稱其自研 NFC 技術突破通信極限,將傳統近場通信任意方向感知距離從 20 釐米擴至 3 米,實現了 「世界上通信距離最遠的 NFC 系統」。這一成果被網絡通信領域全球學術會議 SIGCOMM 2020 收錄。NFC 中文全稱為「近場通信技術」。作為一種短距離的高頻無線通訊技術,NFC 使電子設備之間能夠進行非接觸式點對點數據傳輸。相比起其他近距離無線通信技術,比如藍牙、紅外等,NFC 具有高安全性、成本較低等優勢,通信距離為 0~20cm,實際上大部分產品都在 10cm 以內。
  • 小米手環3與3nfc區別
    功能:是否支持NFC功能是二者最大的區別,小米手環3nfc支持刷公交、地鐵和門禁,小米手環3則不具備此項功能;外觀:小米手環3nfc在屏幕下部的觸摸按鍵上設有n形標誌,小米手環3則沒有;續航時間:小米手環3約為20天,小米手環3nfc約為15天。
  • 小米5X支持nfc嗎?小米5X支持otg嗎?
    小米5X支持nfc嗎?小米5X支持otg嗎?這是很多朋友關注的話題,小米5X如約發布,備受粉絲關注,這款手機最大的賣點是後置變焦雙攝,主打的是拍照功能,價格便宜,性價比高,那麼作為千元手機,很多朋友擔心小米5X支持nfc嗎?小米5X支持otg嗎?下面就來具體介紹一下。
  • NFC近場通信技術 索尼A7II套機售15800元
    (中關村在線數碼影像行情報導)索尼A7II採用了NFC(近場通信)技術,將智慧型手機/平板電腦碰觸相機,無需多步設置,可實現一觸遙控和一觸分享功能。今日筆者了解到,市場上該套機售價為15800元,感興趣的朋友可以看下。
  • nfc是什麼意思?
  • oppo r11 plus支持nfc嗎?oppo r11 plus支持otg嗎
    oppo r11 plus支持nfc嗎?oppo r11 plus支持otg嗎?從oppo r11 plus發布以來一直備受媒體和網友的關注,並且進來很多朋友在問oppo r11 plus支持nfc嗎,下面就針對性的回答一下這些問題。
  • Android Studio 2.2.3 發布
    值得關注的變更:全部的 Bug 修復安裝程序包Windows IDE: https://dl.google.com/dl/android/studio/install/2.2.3.0/android-studio-ide-145.3537739-windows.exe
  • nfc功能是什麼意思nfc功能怎麼用詳細攻略
    nfc功能是什麼意思nfc功能怎麼用詳細攻略 來源:www.18183.com作者:jinwei1990時間:2014-06-25 nfc是什麼意思?相信很多同學都還不是很了解,今天18183小編就為大家帶來nfc功能是什麼攻略,希望能幫助到大家!
  • iphone上的nfc標籤讀卡器是什麼
    iphone上的nfc標籤讀卡器是什麼,一起來了解一下nfc標籤讀卡器是什麼東西吧。 NFC標籤全稱Near Field Communication,意為近距離無線通訊技術。
  • 華為榮耀暢玩7C支持nfc嗎 華為榮耀暢玩7C支持otg嗎
    華為榮耀暢玩7C支持nfc嗎?華為榮耀暢玩7C支持otg嗎?  華為榮耀暢玩7C不支持nfc,也不支持otg。  榮耀暢玩7C在硬體配置上處於比較平均的水準,在千元之內,擁有3/4GB RAM可選,而所選的CPU則是驍龍450,雖然為4系,但其採用14nm工藝,主頻為1.8GHz,基本可以看做是驍龍625的低頻版,對於手機的功耗和性能有著不錯的平衡。