在Android中同时读取多个NFC标签

新的2.3.3 SDK包括改进的NFC支持,我想编写一个依赖于此的应用程序。最后,我希望能够从同时进入该字段的多个标签中读取数据,但Android似乎仅在第一个进入该字段的标签上触发 - 后续的被忽略。 从阅读NFC规范(ISO / IEC 14443-3)我正在使用的标签(Mifare Classic),我应该能够向标签发送'halt'命令,这将导致它停止响应,并允许我要阅读该字段中的下一个标记。 Android不直接在任何
TagTechnology
子类上支持halt命令,所以我尝试使用
transceive(new byte[] {0x50, 0x00})
直接发送它。这会抛出一个
IOException
,信息'收发失败'。 不可否认,我正在从主线程中完成所有这些,我理解这是一个坏主意,但我只想尽可能轻松地测试这个概念。 是否可以同时与现场的多个标签进行通信?我究竟做错了什么?     
已邀请:
不幸的是,你想要的是不可能的,除非你做一些非常先进的hackery,这几乎不是一个好主意:) 如果你在
transceive()
中发送正确的字节,你可能会暂停卡,就像你现在要做的那样。但是,由于停止(或者更确切地说,您尝试发送的HLTA)是ISO14443-3A命令,这将无法通过MifareClassic接口 - 它使用“加密”管道。不幸的是,通过NfcA接口直接传输也不适用于当前的堆栈。 即使您可以让卡停止,这也不会自动导致手机中的NFC芯片恢复轮询新标签 - 因为您正在“绕过”堆栈。     
根据我的短暂经验,您无法使用多个标签。 如果字段中有两个标记,则表示您没有从标记中收到ID,它是二进制零。 所以我的猜测是,在这一点上,你只能访问一个标签,并且在该字段中只能有一个标签。     
您是否成功使用收发器发送其他命令,如读取块(0x30,0x(块))或验证扇区命令?只是想你可能想要确保你首先正确使用收发器。     

要回复问题请先登录注册