溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

深入分析Android NFC技術 android nfc開發

發布時間:2020-10-18 10:54:10 來源:腳本之家 閱讀:291 作者:laozhang 欄目:移動開發

從概念,實現原理以及最紅實現的源碼等有助于大家對NFC技術有更深入的理解。

NFC 是 Near Field Communication 縮寫,即近距離無線通訊技術??梢栽谝苿釉O備、消費類電子產品、PC 和智能控件工具間進行近距離無線通信。簡單一點說,nfc 功能是什么?nfc功能有什么用?其實NFC提供了一種簡單、觸控式的解決方案,可以讓消費者簡單直觀地交換信息、訪問內容與服務。NFC 技術允許電子設備之間進行非接觸式點對點數據傳輸,在十厘米(3.9英吋)內,交換數據,其傳輸速度有106Kbit/秒、212Kbit/秒或者424Kbit/秒三種。接下來我們更加詳細的來了解一下nfc的應用。

深入分析Android NFC技術 android nfc開發

一、nfc是什么,它的工作模式?

NFC工作模式主要有三種工作模式,分別是卡模式(Card emulation)、點對點模式(P2P mode)和讀卡器模式(Reader/writer mode)。

(1)讀卡器模式 http://www.jianshu.com/p/e89cc9bba8a6

數據在NFC芯片中,可以簡單理解成“刷標簽”。本質上就是通過支持NFC的手機或其它電子設備從帶有NFC芯片的標簽、貼紙、名片等媒介中讀寫信息。通常NFC標簽是不需要外部供電的。當支持NFC的外設向NFC讀寫數據時,它會發送某種磁場,而這個磁場會自動的向NFC標簽供電。

(2)仿真卡模式

數據在支持NFC的手機或其它電子設備中,可以簡單理解成“刷手機”。本質上就是將支持NFC的手機或其它電子設備當成借記卡、公交卡、門禁卡等IC卡使用?;驹硎菍⑾鄳狪C卡中的信息憑證封裝成數據包存儲在支持NFC的外設中 。在使用時還需要一個NFC射頻器(相當于刷卡器)。將手機靠近NFC射頻器,手機就會接收到NFC射頻器發過來的信號,在通過一系列復雜的驗證后,將IC卡的相應信息傳入NFC射頻器,最后這些IC卡數據會傳入NFC射頻器連接的電腦,并進行相應的處理(如電子轉帳、開門等操作)。

(3)點對點模式

該模式與藍牙、紅外差不多,用于不同NFC設備之間進行數據交換,不過這個模式已經沒有有“刷”的感覺了。其有效距離一般不能超過4厘米,但傳輸建立速度要比紅外和藍牙技術快很多,傳輸速度比紅外塊得多,如過雙方都使用 Android4.2,NFC會直接利用藍牙傳輸。這種技術被稱為 AndroidBeam。所以使用 androidBeam 傳輸數據的兩部設備不再限于4厘米之內。

深入分析Android NFC技術 android nfc開發

二、Android 對 NFC 的支持

不同的 NFC 標簽之間差異很大,有的只支持簡單的讀寫操作,有時還會采用支持一次性寫入的芯片,將 NFC 標簽設計成只讀的。當然,也存在一些復雜的 NFC 標簽,例如,有一些 NFC 標簽可以通過硬件加密的方式限制對某一區域的訪問。還有一些標簽自帶操作環境,允許 NFC 設備與這些標簽進行更復雜的交互。這些標簽中的數據也會采用不同的格式。但 Android SDK API 主要支持 NFC 論壇標準(Forum Standard),這種標準被稱為 NDEF(NFC Data Exchange Format,NFC 數據交換格式)。

NDEF 格式其實就類似于硬盤的NTFS,下面我們看一下 NDEF 數據:

(1)NDEF數據的操作

Android SDK API支持如下3種NDEF數據的操作:

1)從NFC標簽讀取NDEF格式的數據。

2)向NFC標簽寫入NDEF格式的數據。

3)通過Android Beam技術將NDEF數據發送到另一部NFC設備。

用于描述NDEF格式數據的兩個類:

1)NdefMessage:描述NDEF格式的信息,實際上我們寫入NFC標簽的就是NdefMessage對象。

2)NdefRecord:描述NDEF信息的一個信息段,一個NdefMessage可能包含一個或者多個NdefRecord。

NdefMessage和NdefRecord是Android NFC技術的核心類,無論讀寫NDEF格式的NFC標簽,還是通過Android Beam技術傳遞Ndef格式的數據,都需要這兩個類。

(2)非NDEF數據的操作

對于某些特殊需求,可能要存任意的數據,對于這些數據,我們就需要自定義格式。這些數據格式實際上就是普通的字節流,至于字節流中的數據代表什么,就由開發人員自己定義了。

(3)編寫NFC程序的基本步驟

1)設置權限,限制Android版本、安裝的設備:

深入分析Android NFC技術 android nfc開發

2)定義可接收Tag的Activity,配置一下launchMode屬性:

深入分析Android NFC技術 android nfc開發

三、實戰使用NFC標簽

(1)利用NFC標簽讓Android自動運行程序

場景是這樣的:現將應用程序的包寫到 NFC 程序上,然后我們將 NFC標簽靠近 Android 手機,手機就會自動運行包所對應的程序,這個是NFC 比較基本的一個應用。下面以貼近標簽自動運行 Android 自帶的“短信”為例。

向NFC標簽寫入數據一般分為三步:

1)獲取Tag對象

深入分析Android NFC技術 android nfc開發

2)判斷NFC標簽的數據類型(通過Ndef.get方法)

3)寫入數據

深入分析Android NFC技術 android nfc開發

實際運行效果如下:

操作步驟:

點擊自動打開短信界面或百度頁面,進入對應 Activity,將 NFC 標簽貼近手機背面,提示寫入成功。返回主界面,再將 NFC 標簽貼近手機背面,便能看到自動打開短信或者打開百度頁面。

深入分析Android NFC技術 android nfc開發

深入分析Android NFC技術 android nfc開發

深入分析Android NFC技術 android nfc開發

四、NDEF 文本格式深度解析

獲取 NFC 標簽中的數據要通過 NdefRecord.getPayload 方法完成。當然,在處理這些數據之前,最好判斷一下 NdefRecord 對象中存儲的是不是 NDEF 文本格式數據。

(1)判斷數據是否為NDEF格式

1)TNF(類型名格式,Type Name Format)必須是NdefRecord.TNF_WELL_KNOWN。

2)可變的長度類型必須是NdefRecord.RTD_TEXT。

如果這兩個標準同時滿足,那么就為NDEF格式。

(2)NDEF文本格式規范

不管什么格式的數據本質上都是由一些字節組成的。對于NDEF文本格式來說,這些數據的第1個字節描述了數據的狀態,然后若干個字節描述文本的語言編碼,最后剩余字節表示文本數據。這些數據格式由NFC Forum的相關規范定義,可以通過 http://members.nfc-forum.org/specs/spec_dashboard 下載相關的規范。

下面這兩張表是規范中 3.2節 相對重要的翻譯部分:

深入分析Android NFC技術 android nfc開發

實現 NFC 標簽中的文本數據的讀寫操作:

深入分析Android NFC技術 android nfc開發

深入分析Android NFC技術 android nfc開發

點擊寫 NFC 標簽中的文本數據,跳轉到對應的 Activity,將 NFC 標簽卡貼近手機,寫入成功后會提示,再退回主頁面,選擇讀文本數據,便可讀取。

深入分析Android NFC技術 android nfc開發

深入分析Android NFC技術 android nfc開發

五、非 NDEF 格式(操作步驟如上圖,具體實現查閱項目代碼)

六、NDEF Uri格式存儲(操作步驟如上圖,具體實現可查閱項目代碼)

MifareUltraligh t數據格式:將 NFC 標簽的存儲區域分為16個頁,每一個頁可以存儲4個字節,一個可存儲64個字節(512位)。頁碼從0開始(0至15)。前4頁(0至3)存儲了NFC標簽相關的信息(如NFC標簽的序列號、控制位等)。從第5頁開始存儲實際的數據(4至15頁)。使用MifareUltralight.get 方法獲取 MifareUltralight 對象,然后調用MifareUltralight.connect 方法進行連接,并使用MifareUltralight.writePage 方法每次寫入1頁(4個字節)。

也可以使用 MifareUltralight.readPages 方法每次連續讀取 4 頁。如果讀取的頁的序號超過 15,則從頭開始讀。例如,從第 15 頁(序號為14)開始讀。readPages 方法會讀取 14、15、0、1頁的數據。

深入分析Android NFC技術 android nfc開發

github 鏈接

項目源碼地址:
https://github.com/RickyYu/Nfc-Android

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女