【问题标题】:NFC Mifare Ultralight C authentication timeout using AndroidNFC Mifare Ultralight C 认证超时使用 Android
【发布时间】:2012-10-09 17:17:30
【问题描述】:

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

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

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

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

提前致谢。

【问题讨论】:

    标签: android authentication nfc mifare


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回复。你的意思是如果我必须在身份验证步骤中引入一些延迟,就没有解决方法吗?
    • 我不认为setTimeout() 在这里有帮助,因为标签会在超时发生之前回答。我不知道有任何 Ultralight 或 NfcA 命令可以在身份验证中间发送而不会影响标签的状态。你不应该有这个问题,例如MIFARE DESfire,因为IsoDep 存在检查是一个 ISO 14443-4 "R(NAK)" 消息,它不会影响标签的状态(虽然我没有测试过)。
    • 这很有帮助。谢谢!
    • @NFC 家伙:亲爱的 NFC 家伙,请你看看我的问题:stackoverflow.com/questions/18824879/mifare-authentication。您在这方面似乎很胜任,到目前为止,没有多少人看过我的问题..谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    相关资源
    最近更新 更多