是否可以在沒有來自用戶的輸入的情況下發送NDEF消息?NFC - 點擊發送標記或NDEF消息
我想在以下場景中使用NFC:用戶在NFC閱讀器上輕觸設備。 NFC閱讀器收到消息作爲響應。
本質上,我希望設備作爲標籤進行操作,即不需要用戶輸入。
我知道KitKat 4.4支持HCE(主機卡仿真),雖然我想要一個更好的設備支持,如NDEF消息的解決方案。
是否可以在沒有來自用戶的輸入的情況下發送NDEF消息?NFC - 點擊發送標記或NDEF消息
我想在以下場景中使用NFC:用戶在NFC閱讀器上輕觸設備。 NFC閱讀器收到消息作爲響應。
本質上,我希望設備作爲標籤進行操作,即不需要用戶輸入。
我知道KitKat 4.4支持HCE(主機卡仿真),雖然我想要一個更好的設備支持,如NDEF消息的解決方案。
當Android裝置(通過讀取NFC標籤例如)接收NDEF消息它處理它通過調度機制,以確定一個活動推出。
使用NdefMessage(byte[])
從二進制數據,或NdefMessage(NdefRecord[])
構建NDEF消息,從一個或多個構建體NdefRecords 。
消息中第一條記錄的類型對於消息調度具有特別的重要性,所以請仔細設計此記錄。 在此NDEF消息中獲取NDEF記錄。
一種NdefMessage總是具有一個或多個NDEF記錄:所以下面的代碼來檢索第一個記錄是總是安全的(不需要檢查爲空或數組長度> = 1):
NdefRecord firstRecord = ndefMessage.getRecords()[0];
返回: 一個或多個NDEF記錄的數組。
一個抽頭的方法是不可能的兩個Android裝置
(注意,與其它設備,特別是如果一個是Android和一個 是專用NFC讀取器或設備,其中使用波束您可以控制低層的NFC 功能或模擬NFC標籤的設備)。
但是,兩個Android設備之間可以採用雙擊方式,只需對現有方案稍作修改即可。
你只需要添加一個前景調度攔截傳入的NDEF消息,因此防止從Android的重啓活動:
@Override
public void onResume() {
super.onResume();
NfcAdapter adapter = NfcAdapter.getDefaultAdapter(this);
PendingIntent pi = PendingIntent.getActivity(
this,
0,
new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP),
0);
adapter.enableForegroundDispatch(this, pi, null, null);
}