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

Nic*_*son 18 java android nfc android-sdk-2.3

新的2.3.3 SDK包括改进的NFC支持,我想编写一个依赖于此的应用程序.最后,我希望能够从同时进入该字段的多个标签中读取数据,但Android似乎仅在第一个进入该字段的标签上触发 - 后续的被忽略.

通过阅读我正在使用的标签(Mifare Classic)的NFC规范(ISO/IEC 14443-3),我应该能够向标签发送'halt'命令,这将导致它停止响应,并允许我要阅读该字段中的下一个标记.Android不直接在任何子TagTechnology类上支持halt命令,所以我尝试直接使用它发送它transceive(new byte[] {0x50, 0x00}).这引发了一个IOException消息'收发失败'.

不可否认,我正在从主线程中完成所有这些,我理解这是一个坏主意,但我只想尽可能轻松地测试这个概念.

是否可以同时与现场的多个标签进行通信?我究竟做错了什么?

小智 8

不幸的是,你想要的是不可能的,除非你做一些非常先进的hackery,这几乎不是一个好主意:)

如果你发送正确的字节,你可能会暂停卡transceive(),就像你现在想做的那样.但是,由于停止(或者更确切地说,您尝试发送的HLTA)是ISO14443-3A命令,这将无法通过MifareClassic接口 - 它使用"加密"管道.不幸的是,通过NfcA接口直接传输也不适用于当前的堆栈.

即使您可以让卡停止,这也不会自动导致手机中的NFC芯片恢复轮询新标签 - 因为您正在"绕过"堆栈.