NFC - 点击发送标签或 NDEF 消息
NFC - Send tag or NDEF message on Tap
是否可以在没有用户输入的情况下发送 NDEF 消息?
我想在以下场景中使用 NFC:用户点击 NFC 上的设备 reader。 NFC reader 收到消息作为响应。
基本上我希望设备作为标签运行,即无需用户输入。
我知道 KitKat 4.4 支持 HCE(主机卡仿真),尽管我想要一个具有更好设备支持(例如 NDEF 消息)的解决方案。
当 Android 设备接收到 NDEF 消息(例如通过读取 NFC 标签)时,它会通过确定要启动的 activity 的调度机制。
使用NdefMessage(byte[])
从二进制数据构造NDEF消息,或NdefMessage(NdefRecord[])
从构造一个或更多 NdefRecords。
消息中第一条记录的类型对于消息发送具有特殊的重要性,因此请仔细设计这条记录。
获取此 NDEF 消息中的 NDEF 记录。
一个NdefMessage总是有一个或多个NDEF记录:所以下面的代码检索第一条记录总是安全的(不需要检查 是否为 null 或数组长度 >= 1):
NdefRecord firstRecord = ndefMessage.getRecords()[0];
Returns:
一个或多个 NDEF 记录的数组。
在两个 Android 设备上使用 Beam 无法实现一键式方法
(note that with other devices, particularly if one is Android and one
is a dedicated NFC reader or a device where you can control the NFC
functionality on a low level or a device that emulates an NFC tag).
但是,在两个 Android 设备之间使用两次点击方法是可能的,只需对您现有的场景进行少量修改。
您只需要添加一个前台调度来拦截您传入的 NDEF 消息,从而阻止 Android 重新启动您的 activity:
@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);
}
是否可以在没有用户输入的情况下发送 NDEF 消息?
我想在以下场景中使用 NFC:用户点击 NFC 上的设备 reader。 NFC reader 收到消息作为响应。
基本上我希望设备作为标签运行,即无需用户输入。
我知道 KitKat 4.4 支持 HCE(主机卡仿真),尽管我想要一个具有更好设备支持(例如 NDEF 消息)的解决方案。
当 Android 设备接收到 NDEF 消息(例如通过读取 NFC 标签)时,它会通过确定要启动的 activity 的调度机制。
使用NdefMessage(byte[])
从二进制数据构造NDEF消息,或NdefMessage(NdefRecord[])
从构造一个或更多 NdefRecords。
消息中第一条记录的类型对于消息发送具有特殊的重要性,因此请仔细设计这条记录。 获取此 NDEF 消息中的 NDEF 记录。
一个NdefMessage总是有一个或多个NDEF记录:所以下面的代码检索第一条记录总是安全的(不需要检查 是否为 null 或数组长度 >= 1):
NdefRecord firstRecord = ndefMessage.getRecords()[0];
Returns: 一个或多个 NDEF 记录的数组。
在两个 Android 设备上使用 Beam 无法实现一键式方法
(note that with other devices, particularly if one is Android and one is a dedicated NFC reader or a device where you can control the NFC functionality on a low level or a device that emulates an NFC tag).
但是,在两个 Android 设备之间使用两次点击方法是可能的,只需对您现有的场景进行少量修改。
您只需要添加一个前台调度来拦截您传入的 NDEF 消息,从而阻止 Android 重新启动您的 activity:
@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);
}