android - 无需重新引入即可重新连接到 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)
这里的任何帮助将不胜感激。
解决方案
谢谢安德鲁。
我的猜测是,您实际上并不需要关闭该字段,而只需将标签设为 ISO14443-3 HALT 状态,然后将其恢复为 ACTIVE 状态,但这是未知的。再次发送 HLTA 和 WUPA 的低级 ISO14443-3 命令来执行此操作在 Android 上是有问题的,因为它不是为用户发送这些命令而设计的。
仔细研究 ISO14443-3 标准和 HALT 命令,我终于找到了解决方案。运行下面的命令会导致 aTagLostException
反过来使onTagDiscovered
方法运行。因此,通过使用 HALT,我无需物理重新引入即可重新发现 TAG。
byte[] HaltCMD = {0x35, 0x30, 0x30,0x30, 0x00};
推荐阅读
- flutter - Flutter 如何使用 page.dart 作为整个应用的 Navbar?
- php - 在 php 中调用未定义的函数 svn_auth_set_parameter()
- outlook - 如何更改存档文件夹
- ruby-on-rails - Hotwire 未更新项目列表
- database - 将 csv 文件导入 PgAdmin 表时出错
- javascript - 如何将 datetime-local 输入字段限制为约会的特定日期和时间?
- spring-boot - 如何加密jaas配置文件中的kafka密码
- python - 如何在我的 API 中按属性拆分订单
- ipaf - 如何在流中调用多个活动?
- php - 从 MySQL 检索和显示 blob 图像