我正在编写一个应该能够读取和写入类型1,2,3和4的nfc标签的应用程序。我有tag1,tag2和tag4标签都支持NfcA技术,我想使用NfcA class(http://developer.android.com/reference/android/nfc/tech/NfcA.html)与trancieve(byte [])函数一起向标记发送命令。我如何以编程方式区分标签,以便我知道要使用的通信协议(命令对所有标签类型都不同)。
例如,以下分别对Tag1和Tag2执行读命令:
// Note: nfcATag is an instance of android.nfc.tech.NfcA
byte[] readTag1Bytes = nfcATag.transcieve(new byte[] {0x01, 0x00, 0x00, id[0], id[1], id[2], id[3]}); // Id[] is a byte array that contains tag id
byte[] readTag2Bytes = nfcATag.transcieve(new byte[] {0x30, 0x00})
感谢任何帮助..
答案 0 :(得分:1)
NfcA等同于ISO 14443 A型,因此您可以通过评估发送应答器的ATQA / SENS_RES(2字节)响应来区分标签。
有关可区分标记类型的列表,请参阅here。
您可以使用以下命令:
byte[] getAtqa() //Return the ATQA/SENS_RES bytes from tag discovery.
Tag getTag() //Get the Tag object backing this TagTechnology object.