使用Android书写时NFC标签上的数据表示

时间:2013-12-19 08:02:37

标签: android nfc rfid mifare ndef

MIFARE Classic 1K内存卡有多个扇区来存储数据,所以我想知道如何在将NDEF数据写入Android中的标签时将数据分配并存储到MIFARE Classic 1k的扇区中,而不是以下命令:

Ndef ndef = Ndef.get(tag);
ndef.writeNdefMessage(message);

1 个答案:

答案 0 :(得分:2)

由于MIFARE Classic不是标准的NFC标签,因此没有标准的方法在这些卡上存储NDEF格式的数据。但是,恩智浦提供了两个数据表,解释了NXP针对MIFARE Classic标签的专有NDEF映射:

这些数据表中描述的映射广泛用于能够在MIFARE Classic上读取/存储NDEF消息的设备,并且还用于具有恩智浦NFC芯片组的Android设备。

NDEF映射的基本原则是:

  1. 创建一个MIFARE应用程序目录(在块0中(对于4K卡为16),可以使用键A = 0xA0A1A2A3A4A5读取。
  2. 在MAD中,将您希望能够存储NDEF数据的所有扇区标记为属于应用程序0xE103。
  3. 必须使用密钥A 0xD3F7D3F7D3F7读取所有NDEF扇区,并且必须将其GPB设置为0x40(如果允许读/写访问)或0x43(如果仅允许读取)。
  4. 所有NDEF扇区的块0-2代表TLV结构的存储(类似于NFC论坛兼容的NFC标签上的那些)。
  5. 用于存储NDEF消息的TLV结构的标记为0x03,因此NDEF消息将嵌入为<0x03> <LEN (1 Byte)> <NDEF MESSAGE>(或<0x03> <0xFF> <LEN (2 Bytes)> <NDEF MESSAGE>
  6. 最后一个TLV结构后跟一个终结者TLV,一个字节0xFE