Android NFC(一)

官方文檔:https://developer.android.google.cn/guide/topics/connectivity/nfc/nfc.html

前言:NFC(Near Field Communication 近場通訊),它是前幾年逐漸起來的一種技術(shù)伶跷,出來之后啄枕,感覺一直不溫不火的樣子猬膨。直到最近有個朋友需要手機(jī)與nfc標(biāo)簽讀寫信息,讓我?guī)兔Γ圆帕私膺@門技術(shù)硬爆,下面我們一起來了解并學(xué)習(xí)一下爸黄。

一滞伟、近場通訊

大家都知道android近場通訊包括我們最熟知的wifi,藍(lán)牙炕贵,還有已經(jīng)慢慢消失的紅外梆奈,最后就是我們今天的主角nfc了,nfc與其他通信類型不同的是要求距離不能超過4cm(不同的nfc標(biāo)簽略有差別)称开,查看官方文檔亩钟,我們知道nfc通信的模式有一下三種:
讀卡器模式(Reader/Writer Mode)


仿真卡模式(Card Emulation Mode)

點(diǎn)對點(diǎn)模式(P2P Mode)

二、nfc標(biāo)簽

今天主要講的是讀寫模式鳖轰,在開始寫代碼之前清酥,有必要了解nfc的標(biāo)簽調(diào)度系統(tǒng),標(biāo)簽調(diào)度系統(tǒng)如何解析NFC標(biāo)簽和特殊的工作蕴侣,當(dāng)它檢測到NDEF消息的標(biāo)記調(diào)度系統(tǒng)一樣焰轻。NFC標(biāo)簽來在廣泛的技術(shù)和還可以有許多不同的方式寫入到其中的數(shù)據(jù)。機(jī)器人具有用于NDEF標(biāo)準(zhǔn)NDEF數(shù)據(jù)被封裝的消息(內(nèi)部NdefMessage)昆雀,其中包含一個或多個記錄(NdefRecord)鹦马。每個NDEF記錄必須根據(jù)您要創(chuàng)建的記錄類型的規(guī)格良好的。Android版 ??還支持其它類型的標(biāo)簽不包含NDEF的數(shù)據(jù)忆肾,您可以通過在使用類的工作android.nfc.tech包荸频。要了解更多有關(guān)這些技術(shù),請參閱高級NFC主題客冈。這些其他類型的標(biāo)簽工作包括編寫你自己的協(xié)議棧與標(biāo)簽進(jìn)行通信旭从,因此,我們建議使用NDEF在可能的情況,便于開發(fā)和最大支持Android的供電設(shè)備和悦。

現(xiàn)在退疫,你有NFC標(biāo)簽的背景,下面的章節(jié)詳細(xì)描述了Android的如何處理NDEF格式化的標(biāo)簽鸽素。
當(dāng)一個Android設(shè)備掃描包含NDEF格式的數(shù)據(jù)的NFC標(biāo)簽褒繁,它解析該消息并試圖找出數(shù)據(jù)的MIME類型或標(biāo)識的URI。要做到這一點(diǎn)馍忽,系統(tǒng)讀取所述第一[NdefRecord(https://developer.android.google.cn/reference/android/nfc/NdefRecord.html)
內(nèi)部的[NdefMessage](https://developer.android.google.cn/reference/android/nfc/NdefMessage.html)棒坏,以確定如何解釋整個NDEF消息(一個NDEF消息可以有多個NDEF記錄)。
在一個結(jié)構(gòu)良好的NDEF消息遭笋,第一個[NdefRecord(https://developer.android.google.cn/reference/android/nfc/NdefRecord.html)

包含以下字段:

3-bit TNF (Type Name Format) :指示如何解釋可變長度類型字段

![0HF]EHB8]IQN5AC1BFIAY3M.png](http://upload-images.jianshu.io/upload_images/3287039-406ac40629b31ff6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

Variable length type:描述了記錄的類型坝冕。如果使用TNF_WELL_KNOWN,使用此字段指定記錄類型定義(RTD)

ZMUO)G4X)HRB%ZH0)DK_7J1.png

Variable length payload:要讀取或?qū)懭氲膶?shí)際數(shù)據(jù)的有效載荷瓦呼。一個NDEF消息可以包含多個NDEF記錄喂窟,所以不承擔(dān)全部有效載荷在NDEF消息的第一NDEF紀(jì)錄。

三:nfc分發(fā)

說了這么多央串,Android系統(tǒng)是怎么檢測到nfc靠近并通知相應(yīng)的應(yīng)用程序呢磨澡?其實(shí)就是用的Intent Filter,當(dāng)我們在AndroidManifest.xml的activity中注冊了相應(yīng)的nfc intent后,當(dāng)有相應(yīng)的action來臨時质和,系統(tǒng)就會把nfc分發(fā)到該App中钱贯,如果有多個App符合要求,則系統(tǒng)會彈出對話框讓用戶選擇侦另。標(biāo)簽調(diào)度系統(tǒng)定義了三個意圖秩命,優(yōu)先級從高到低如下:

1.ACTION_NDEF_DISCOVERED:

本意圖是用來啟動一個活動時,它包含一個NDEF凈荷標(biāo)簽的掃描和是一個公認(rèn)的類型褒傅。
這是最高優(yōu)先級的意圖弃锐,并且標(biāo)簽調(diào)度系統(tǒng)嘗試盡可能任何其他意圖,之前啟動這一意圖的活動殿托。

2.ACTION_TECH_DISCOVERED:

如果沒有App注冊過ACTION_NDEF_DISCOVERED霹菊,標(biāo)簽調(diào)度系統(tǒng)試圖啟動與此意向的應(yīng)用程序。此意向也直接啟動(不啟動ACTION_NDEF_DISCOVERED在前)支竹,如果被掃描的標(biāo)簽包含無法映射到MIME類型或URI旋廷,或者如果標(biāo)簽不包含NDEF數(shù)據(jù),但是是一個已知的標(biāo)簽技術(shù)NDEF數(shù)據(jù)礼搁。

3.ACTION_TAG_DISCOVERED:

如果沒有活動處理這一意圖已啟動ACTION_NDEF_DISCOVERED或ACTION_TECH_DISCOVERED意圖饶碘。

標(biāo)簽調(diào)度系統(tǒng)工作的基本方法如下:

1.嘗試啟動與由標(biāo)簽調(diào)度系統(tǒng)解析NFC標(biāo)簽時(無論是創(chuàng)建一個意圖活動ACTION_NDEF_DISCOVERED或ACTION_TECH_DISCOVERED)。

2.如果這一意圖沒有活動過濾器馒吴,嘗試下一個優(yōu)先級最低的意圖(無論是啟動一個活動ACTION_TECH_DISCOVERED或ACTION_TAG_DISCOVERED扎运,直到意圖或直至標(biāo)簽調(diào)度系統(tǒng)中的應(yīng)用程序過濾器嘗試所有可能的目的瑟曲。
3.如果沒有應(yīng)用程序篩選任何意圖的,什么也不做豪治。

nfc_tag_dispatch.png

只要有可能洞拨,以NDEF消息和工作ACTION_NDEF_DISCOVERED的意圖,因?yàn)樗亲钐囟ǔ龅娜齻€负拟。
此意向烦衣,您可以在比其他兩個意圖更適當(dāng)?shù)臅r間啟動應(yīng)用程序,給用戶更好的體驗(yàn)掩浙。

以上內(nèi)容均來自官方文檔花吟。參考下一篇Android NFC(二)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市涣脚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌寥茫,老刑警劉巖遣蚀,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異纱耻,居然都是意外死亡芭梯,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進(jìn)店門弄喘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玖喘,“玉大人,你說我怎么就攤上這事蘑志±勰危” “怎么了?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵急但,是天一觀的道長澎媒。 經(jīng)常有香客問我,道長波桩,這世上最難降的妖魔是什么戒努? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮镐躲,結(jié)果婚禮上储玫,老公的妹妹穿的比我還像新娘。我一直安慰自己萤皂,他們只是感情好撒穷,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著裆熙,像睡著了一般桥滨。 火紅的嫁衣襯著肌膚如雪窝爪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天齐媒,我揣著相機(jī)與錄音蒲每,去河邊找鬼。 笑死喻括,一個胖子當(dāng)著我的面吹牛邀杏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播唬血,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼望蜡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拷恨?” 一聲冷哼從身側(cè)響起脖律,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎腕侄,沒想到半個月后小泉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡冕杠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年微姊,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片分预。...
    茶點(diǎn)故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡兢交,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出笼痹,到底是詐尸還是另有隱情配喳,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布凳干,位于F島的核電站界逛,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏纺座。R本人自食惡果不足惜息拜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望净响。 院中可真熱鬧少欺,春花似錦、人聲如沸馋贤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽配乓。三九已至仿滔,卻和暖如春惠毁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背崎页。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工鞠绰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人飒焦。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓蜈膨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親牺荠。 傳聞我的和親對象是個殘疾皇子翁巍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內(nèi)容