我正在尝试验证 Mifare Ultralight C(ISO/IEC 14443-2 和 14443-3 A 型兼容)标签。
我使用Android中提供的MifareUltralight.transceive()函数发送身份验证命令。我还检查了 NfcA.transceive() (IsoDep 似乎与此类标签不兼容,因为该对象用于处理 ISO/IEC 14443-4 标签,这就是我不使用 IsoDep.transceive() 的原因)。
因此,当我第一次发送身份验证请求命令时,标签用 AFxxxx 应答 transceive() ... 我处理标签答案,然后发送另一个带有对该答案的响应的 transceive() 但......就在之前发送 transceive() 标签已连接,发送时我收到“标签丢失”警告和“收发失败”。
另外,如果我尝试使用 NfcA,也会发生同样的问题。
最后,如果我尝试在第一个响应后发送一个身份验证命令,我还会收到“标签丢失”警告,并且收发失败。
所以我的问题是:
为什么当我发送第二个 transceive() 时 NFC 标签会丢失?<<
(这似乎不是超时问题,因为在发送第二个 transceive() 之前,连接已与标签打开)
我在与 UI 线程不同的线程中制作了所有内容。
提前致谢!
看来你的做法是正确的。但是,该标签的行为表明您对该标签的答案的响应不正确。在这种情况下,标签将拒绝回答。从手机的角度来看,这与标签消失没有区别,因此您会得到一个TagLostException
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)