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

-5 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
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*and 5

因此,您似乎从此MIFARE Ultralight标签上阅读了从第4页开始的4页.此外,标签似乎根据NFC论坛类型2标签操作规范(可从NFC论坛网站获得)格式化.

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)
Run Code Online (Sandbox Code Playgroud)

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

现在,我们知道,标签包含一个以NDEF开头的消息

D101115402656E3334
Run Code Online (Sandbox Code Playgroud)

这转化为

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)
Run Code Online (Sandbox Code Playgroud)

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

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