Android近场通信---NFC基础(二)(转)
轉(zhuǎn)自?http://blog.csdn.net/think_soft/article/details/8171256
?
應(yīng)用程序如何調(diào)度NFC標(biāo)簽
當(dāng)標(biāo)簽調(diào)度系統(tǒng)完成對NFC標(biāo)簽和它的標(biāo)識(shí)信息封裝的Intent對象的創(chuàng)建時(shí),它會(huì)把該Intent對象發(fā)送給感興趣的應(yīng)用程序。如果有多個(gè)應(yīng)用程序能夠處理該Intent對象,就會(huì)顯示Activity選擇器,讓用戶選擇Activity。標(biāo)簽調(diào)度系統(tǒng)定義了三種Intent對象,以下按照由高到低的優(yōu)先級(jí)列出這三種Intent對象:
1.? ACTION_NDEF_DISCOVERED:這種Intent用于啟動(dòng)包含NDEF負(fù)載和已知類型的標(biāo)簽的Activity。這是最高優(yōu)先級(jí)的Intent,并且標(biāo)簽調(diào)度系統(tǒng)在任何其他Intent之前,都會(huì)盡可能的嘗試使用這種類型的Intent來啟動(dòng)Activity。
2.? ACTION_TECH_DISCOVERED:如果沒有注冊處理ACTION_NDEF_DISCOVERED類型的Intent的Activity,那么標(biāo)簽調(diào)度系統(tǒng)會(huì)嘗試使用這種類型的Intent來啟動(dòng)應(yīng)用程序。如果被掃描到的標(biāo)簽包含了不能被映射到MIME類型或URI的NDEF數(shù)據(jù),或者沒有包含NDEF數(shù)據(jù),但是是已知的標(biāo)簽技術(shù),那么也會(huì)直接啟動(dòng)這種類型的Intent對象(而不是先啟動(dòng)ACTION_NDEF_DISCOVERED類型的Intent)
3.? ACTION_TAB_DISCOVERED:如果沒有處理ACTION_NDEF_DISCOVERED或ACTION_TECH_DISCOVERED類型Intent的Activity,就會(huì)啟動(dòng)這種類型的Intent。
?
標(biāo)簽調(diào)度系統(tǒng)的基本工作方法如下:
1.? 用解析NFC標(biāo)簽時(shí)由標(biāo)簽調(diào)度系統(tǒng)創(chuàng)建的Intent對象(ACTION_NDEF_DISCOVERED或ACTION_TECH_DISCOVERED)來嘗試啟動(dòng)Activity;
2.? 如果沒有對應(yīng)的處理Intent的Activity,那么就會(huì)嘗試使用下一個(gè)優(yōu)先級(jí)的Intent(ACTION_TECH_DISCOVERED或ACTION_TAG_DISCOVERED)來啟動(dòng)Activity,直到有對應(yīng)的應(yīng)用程序來處理這個(gè)Intent,或者是直到標(biāo)簽調(diào)度系統(tǒng)嘗試了所有可能的Intent。
3.? 如果沒有應(yīng)用程序來處理任何類型的Intent,那么就不做任何事情。
圖1.標(biāo)簽調(diào)度系統(tǒng)
在可能的情況下,都會(huì)使用NDEF消息和ACTION_NDEF_DISCOVERED類型的Intent來工作,因?yàn)樗沁@三種Intent中最標(biāo)準(zhǔn)的。這種Intent與其他兩種Intent相比,它會(huì)允許你在更加合適的時(shí)機(jī)來啟動(dòng)你的應(yīng)用程序,從而給用戶帶來更好的體驗(yàn)。
?
在Android的Manifest中申請NFC訪問
在訪問設(shè)備的NFC硬件和正確的處理NFC的Intent之前,要在AndroidManifest.xml文件中進(jìn)行以下聲明:
1.? 在<uses-permission>元素中聲明訪問NFC硬件:
<uses-permission android:name="android.permission.NFC" />
2.? 你的應(yīng)用程序所支持的最小的SDK版本。API Level 9只通過ACTION_TAG_DISCOVERED來支持有限的標(biāo)簽調(diào)度,并且只能通過EXTRA_NDEF_MESSAGES來訪問NDEF消息。沒有其他的標(biāo)簽屬性或I/O操作可用。API Level 10中包含了廣泛的讀寫支持,從而更好的推動(dòng)了NDEF的應(yīng)用前景,并且API Leve 14用Android Beam和額外的方便的創(chuàng)建NDEF記錄的方法,向外提供了更容易的把NDEF消息推送給其他設(shè)備的方法。
<uses-sdkandroid:minSdkVersion="10"/>3.? 使用uses-feature元素,在Google Play中,以便你的應(yīng)用程序能夠只針對有NFC硬件的設(shè)備來顯示。
<uses-featureandroid:name="android.hardware.nfc"android:required="true"/>
如果你的應(yīng)用程序使用了NFC功能,但是相關(guān)的功能又不是你的應(yīng)用程序的關(guān)鍵功能,你可以忽略u(píng)ses-feature元素,并且要在運(yùn)行時(shí)通過調(diào)用getDefaultAdapter()方法來檢查NFC是否有效。
轉(zhuǎn)載于:https://www.cnblogs.com/SamuelSun/p/4517543.html
總結(jié)
以上是生活随笔為你收集整理的Android近场通信---NFC基础(二)(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 区间素数筛法
- 下一篇: 习惯看新闻头条 一个程序员分享的工作心