2015-05-30 36 views
-1

是否可以在沒有來自用戶的輸入的情況下發送NDEF消息?NFC - 點擊發送標記或NDEF消息

我想在以下場景中使用NFC:用戶在NFC閱讀器上輕觸設備。 NFC閱讀器收到消息作爲響應。

本質上,我希望設備作爲標籤進行操作,即不需要用戶輸入。

我知道KitKat 4.4支持HCE(主機卡仿真),雖然我想要一個更好的設備支持,如NDEF消息的解決方案。

回答

1

當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); 
}