1

我正在尝试按照这些步骤使用 Android 手机(Samsung Galaxy Nexus)对 Mifare Ultralight C 标签进行身份验证。如果步骤之间没有延迟,则身份验证工作正常。但是如果有延迟,比如在响应消息前等待 200ms,就会抛出 IOException。

我尝试了 Android API 提供的 setTimeout 方法,但似乎没有什么不同。

我不认为这是标签问题,因为我可以使用连接到我的 Macbook 的不同阅读器对其进行身份验证,即使有一些延迟。(实际上我能够单步执行代码并且标签没有抱怨)。

这是 Android API 限制吗?任何解决方法?在这种情况下是否应该使用 setTimeout 方法?我怀疑我可能会错误地使用该方法。

提前致谢。

4

1 回答 1

2

每当您不与标签通信时,Android 都会持续检查标签是否存在。它如何做到这一点取决于标签的技术(NfcA/B/F/V 或 IsoDep),但对于 MIFARE Ultralight,这将通过重新选择标签来完成。这实质上会重置它,因此任何身份验证上下文都将丢失,并且标签将无法继续进行身份验证。

这种行为与典型的桌面阅读器的行为完全不同。因此,在这种情况下,您需要注意这一点。最好的办法是通过与标签持续通信来防止自动存在检查启动。(当您在调试器中单步执行代码时,状态检查也将开始,顺便说一句。)

于 2012-10-09T18:18:11.863 回答