深入分析AndroidNFC技術(shù)androidnfc開發(fā)-創(chuàng)新互聯(lián)

從概念,實(shí)現(xiàn)原理以及最紅實(shí)現(xiàn)的源碼等有助于大家對NFC技術(shù)有更深入的理解。

創(chuàng)新互聯(lián)專業(yè)成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè),集網(wǎng)站策劃、網(wǎng)站設(shè)計、網(wǎng)站制作于一體,網(wǎng)站seo、網(wǎng)站優(yōu)化、網(wǎng)站營銷、軟文發(fā)稿等專業(yè)人才根據(jù)搜索規(guī)律編程設(shè)計,讓網(wǎng)站在運(yùn)行后,在搜索中有好的表現(xiàn),專業(yè)設(shè)計制作為您帶來效益的網(wǎng)站!讓網(wǎng)站建設(shè)為您創(chuàng)造效益。

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

深入分析Android NFC技術(shù) android nfc開發(fā)

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


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

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

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

(2)仿真卡模式

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

(3)點(diǎn)對點(diǎn)模式

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

深入分析Android NFC技術(shù) android nfc開發(fā)

二、Android 對 NFC 的支持


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

NDEF 格式其實(shí)就類似于硬盤的NTFS,下面我們看一下 NDEF 數(shù)據(jù):

(1)NDEF數(shù)據(jù)的操作

Android SDK API支持如下3種NDEF數(shù)據(jù)的操作:

1)從NFC標(biāo)簽讀取NDEF格式的數(shù)據(jù)。

2)向NFC標(biāo)簽寫入NDEF格式的數(shù)據(jù)。

3)通過Android Beam技術(shù)將NDEF數(shù)據(jù)發(fā)送到另一部NFC設(shè)備。

用于描述NDEF格式數(shù)據(jù)的兩個類:

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

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

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

(2)非NDEF數(shù)據(jù)的操作

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

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

1)設(shè)置權(quán)限,限制Android版本、安裝的設(shè)備:

深入分析Android NFC技術(shù) android nfc開發(fā)

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

深入分析Android NFC技術(shù) android nfc開發(fā)

三、實(shí)戰(zhàn)使用NFC標(biāo)簽

(1)利用NFC標(biāo)簽讓Android自動運(yùn)行程序

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

向NFC標(biāo)簽寫入數(shù)據(jù)一般分為三步:

1)獲取Tag對象

深入分析Android NFC技術(shù) android nfc開發(fā)

2)判斷NFC標(biāo)簽的數(shù)據(jù)類型(通過Ndef.get方法)

3)寫入數(shù)據(jù)

深入分析Android NFC技術(shù) android nfc開發(fā)

實(shí)際運(yùn)行效果如下:

操作步驟:

點(diǎn)擊自動打開短信界面或百度頁面,進(jìn)入對應(yīng) Activity,將 NFC 標(biāo)簽貼近手機(jī)背面,提示寫入成功。返回主界面,再將 NFC 標(biāo)簽貼近手機(jī)背面,便能看到自動打開短信或者打開百度頁面。

深入分析Android NFC技術(shù) android nfc開發(fā)

深入分析Android NFC技術(shù) android nfc開發(fā)

深入分析Android NFC技術(shù) android nfc開發(fā)

四、NDEF 文本格式深度解析


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

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

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

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

如果這兩個標(biāo)準(zhǔn)同時滿足,那么就為NDEF格式。

(2)NDEF文本格式規(guī)范

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

下面這兩張表是規(guī)范中 3.2節(jié) 相對重要的翻譯部分:

深入分析Android NFC技術(shù) android nfc開發(fā)

實(shí)現(xiàn) NFC 標(biāo)簽中的文本數(shù)據(jù)的讀寫操作:

深入分析Android NFC技術(shù) android nfc開發(fā)

深入分析Android NFC技術(shù) android nfc開發(fā)

點(diǎn)擊寫 NFC 標(biāo)簽中的文本數(shù)據(jù),跳轉(zhuǎn)到對應(yīng)的 Activity,將 NFC 標(biāo)簽卡貼近手機(jī),寫入成功后會提示,再退回主頁面,選擇讀文本數(shù)據(jù),便可讀取。

深入分析Android NFC技術(shù) android nfc開發(fā)

深入分析Android NFC技術(shù) android nfc開發(fā)

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


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

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

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

深入分析Android NFC技術(shù) android nfc開發(fā)

github 鏈接


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

新聞名稱:深入分析AndroidNFC技術(shù)androidnfc開發(fā)-創(chuàng)新互聯(lián)
瀏覽地址:http://muchs.cn/article34/idese.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化全網(wǎng)營銷推廣、建站公司、用戶體驗、手機(jī)網(wǎng)站建設(shè)動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)