**:
從intent中獲取資訊
如果因為nfc的intent而啟動乙個activity,那麼你就能夠從intent中獲取被掃瞄到的nfc標籤的相關資訊。根據被掃瞄到的標籤,intent物件能夠以下額外的資訊:
1. extra_tag(必須的):它是乙個代表了被掃瞄到的標籤的
tag物件;
2. extra_ndef_messages(可選):它是乙個解析來自標籤中的ndef訊息的陣列。這個附加資訊是強制在intent物件上的;
3. }}
//process the msgs array}
此外,你還能夠從intent物件中獲得乙個tag物件,該物件包含了資料負載,並允許你列舉標籤的技術:
tagtag
=intent
.getparcelableextra
(nfcadapter
.extra_tag);
建立通用的
ndef
記錄型別
本節介紹如何建立通用的ndef記錄型別,以便幫助你向nfc標籤寫入或用android beam傳送資料。從android4.0(api level14)開始,可以用createuri()方法來幫助你自動的建立uri記錄。從android4.1(api level 16)開始,可以用createexternal()和createmime()方法來幫助你建立mime和外部型別的ndef記錄。使用這些輔助方法會盡可能的避免手動建立ndef記錄的錯誤。
本節還要介紹如何建立ndef記錄對應的intent過濾器。所有的這些寫入或傳送到nfc標籤的ndef記錄例子都應該是ndef訊息的第一條記錄。
tnf_absolute_uri
注意:我們推薦你使用rtd_uri型別,而不是tnf_absolute_uri,因為它更高效。
用下列方法建立乙個tnf_absolute_uri型別的ndef記錄:
ndefrecord urirecord = new ndefrecord(
ndefrecord.tnf_absolute_uri ,
"".getbytes(charset.forname("us-ascii")),
new byte[0], new byte[0]);
對應的intent過濾器如下:
android:host="developer.android.com"
android:pathprefix="/index.html" />
tnf_mime_media
使用下列方法建立tnf_mime_media型別的ndef記錄。
使用createmime()方法:
"beam me up, android".getbytes(charset.forname("us-ascii")));
手動的建立ndefrecord:
ndefrecord mimerecord = new ndefrecord(
ndefrecord.tnf_mime_media ,
new byte[0], "beam me up, android!".getbytes(charset.forname("us-ascii")));
對應的intent過濾器如下:
tnf_well_known
和rtd_text
用下列方法建立tnf_well_known型別的ndef記錄:
public ndefrecord createtextrecord(string payload, locale locale, boolean encodeinutf8)
對應的intent過濾器如下:
tnf_well_know
和rtd_uri
用下列方法建立tnf_well_known型別的ndef記錄。
使用createuri(string)方法:
ndefrecord
rtdurirecord1
=ndefrecord
.createuri
("");
使用
createuri(uri)
方法:
uri uri = new uri("");
ndefrecord rtdurirecord2 = ndefrecord.createuri(uri);
手動的建立ndefrecord:
對應的intent過濾器如下:
android:host="example.com"
android:pathprefix="" />
tnf_external_type
使用下列方法建立tnf_external_type型別的記錄。
使用createexternal()方法:
byte payload; //assign to your data
string type = "externaltype";
ndefrecord extrecord = ndefrecord.createexternal(domain, type, payload);
手動的建立ndefrecord:
byte payload;
...ndefrecord extrecord = new ndefrecord(
ndefrecord.tnf_external_type, "com.example:externaltype", new byte[0], payload);
對應的intent過濾器如下:
android:host="ext"
android:pathprefix="/com.example:externaltype"/>
使用更加一般化的tnf_external_type型別nfc部署,以便更好的支援android裝置和非android裝置。
注意:tnf_external_type型別的urn包含以下格式:
urn:nfc:ext:example.com.externaltype
,但是,nfc論壇的rtd規範宣告,urn的urn:nfc:ext:部分在ndef記錄中必須忽略。因此你需要提供的所有資訊是用「:」號把網域名稱(示例中的example.com)和型別(示例中的externaltype)分離開。在排程tnf_external_type型別的記錄時,android會把urn:nfc:ext:example.com:externaltype的urn轉換成vnd.android.nfc://ext/example.com:externaltype的uri,它是在示例中宣告的intent過濾器。
Android近場通訊 NFC基礎(二)
應用程式如何排程nfc標籤 當標籤排程系統完成對nfc標籤和它的標識資訊封裝的intent物件的建立時,它會把該intent物件傳送給感興趣的應用程式。如果有多個應用程式能夠處理該intent物件,就會顯示activity選擇器,讓使用者選擇activity。標籤排程系統定義了三種intent物件,...
Android近場通訊 高階NFC(一)
本文譯自 本文介紹一些高階的nfc專題,如多樣的nfc標籤技術 編寫nfc標籤 以及前台排程,前台排程允許在前台的應用程式優先排程intent事件,即使還有其他的過濾同樣的intent事件的應用程式存在。android所支援的nfc標籤技術 在使用nfc標籤和android裝置來進行工作的時候,使用...
NFC近場通訊,NFC列印開發
在進行nfc列印時我們先要了解印表機的屬性,本文中印表機以exp342為標準進行編寫整合技術文件。exp342的部分設定請參考該產品的使用說明書。我們在進行android整合開發時需要注意印表機的黑標感應點的位置,確定列印紙張黑標是否完全覆蓋印表機黑標感應點,如果未完全覆蓋將會導致列印紙不能走到你預...