无需重新引入即可重新连接到 NFC TAG

Reconnect to NFC TAG without reintroduction

我现在一直在努力寻找是否有可能在不将 NFC 标签移开然后再移回的情况下触发 tag_discovered。我的发现表明,在某些设备上,只需使用以下命令 nfcA.close() 关闭 NfcA 连接即可。似乎不同的制造商以不同的方式实现这一点(?)。

是否有其他方法可以破坏设备和 TAG 之间的 NFC 场?

我也试过禁用 NfcAdapter 和 NfcManager。这似乎也适用于某些设备,但并非全部:

// Disable
nfcAdapter.disableForegroundDispatch(this)
nfcManager.defaultAdapter.disableReaderMode(this)

// Enable 
val option = Bundle()
option.putInt(NfcAdapter.EXTRA_READER_PRESENCE_CHECK_DELAY, 2000)
nfcAdapter.enableReaderMode(this, nfcManager, NfcAdapter.FLAG_READER_NFC_A, option)

如有任何帮助,我们将不胜感激。

谢谢安德鲁。

My guess is that you don't actually need to turn the field off but just need to get the Tag to the ISO14443-3 HALT state and then bring it back to ACTIVE state, but that is unknown. Again sending the low level ISO14443-3 commands of HLTA and WUPA to do this is problematic on Android as it is not designed for the user to send these commands.

仔细研究 ISO14443-3 标准和 HALT 命令,我终于找到了解决方案。 运行 下面的命令会导致 TagLostException 进而使 onTagDiscovered 方法成为 运行。因此,通过使用 HALT,我可以重新发现 TAG,而无需物理重新引入。

byte[] HaltCMD = {0x35, 0x30, 0x30,0x30, 0x00};