首页 > 解决方案 > 无需重新引入即可重新连接到 NFC TAG

问题描述

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

还有其他方法可以破坏设备和 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)

这里的任何帮助将不胜感激。

标签: androidnfcreconnect

解决方案


谢谢安德鲁。

我的猜测是,您实际上并不需要关闭该字段,而只需将标签设为 ISO14443-3 HALT 状态,然后将其恢复为 ACTIVE 状态,但这是未知的。再次发送 HLTA 和 WUPA 的低级 ISO14443-3 命令来执行此操作在 Android 上是有问题的,因为它不是为用户发送这些命令而设计的。

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

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

推荐阅读