在android中读取NFC Mifare卡原始数据

时间:2015-01-16 09:26:39

标签: android nfc mifare acr122

我尝试使用NFC非接触式读卡器ACR122U Android SDK阅读Mifare Ultralight卡的内容。

我可以获得以下十六进制值

01 03 A0 0C 44 03 15 D1 01 11 54 02 65 6E 33 34

但我无法获得实际数据。请指导我如何从上面的十六进制值中提取字节数组。

1 个答案:

答案 0 :(得分:5)

因此,您似乎从此MIFARE Ultralight标记中读取了从第4页开始的4页。此外,标签似乎根据NFC论坛类型2标签操作规范(可从NFC Forum website获得)进行格式化。

Type 2标签包含一系列标签长度值(TLV)结构:

01 (Tag: Lock Control TLV)
  03 (Length: 3 bytes)
  A0 0C 44 (Value: Information on position and function of lock bytes)
03 (Tag: NDEF Message TLV)
  15 (Length: 21 bytes)
  D101115402656E3334... (Value: NDEF message)

您必须为接下来的4个页面发出读取命令,以获取NDEF消息的剩余数据。

目前,我们知道标签包含以

开头的NDEF消息
D101115402656E3334

这转换为

D1 (Header byte of record 1)
    - Message begin is set (= first record of an NDEF message)
    - Message end is set (= last record of an NDEF message)
    - Short record flag is set (= Payload length field consists of 1 byte only)
    - Type Name Format = 0x1 (= Type field contains an NFC Forum well-known type)
  01 (Type length: 1 byte)
  11 (Payload length: 17 bytes)
  54 (Type: "T")
  02656E3334... (Payload field)

NFC论坛文本记录的有效负载字段解码如下:

02 (Status byte: Text is UTF-8 encoded, Language code has a length of 2 bytes)
656E (Language code: "en")
3334... (Text: "34"...)