使用提供的数据在 NFC 标签中写入数据

Write data in NFC tag with the provided data

谁能告诉我如何将以下信息写入 NFC 标签?

是否有任何工具或应用程序可以用这种格式编写?

 +------+------+------+------+------+--------------------------+
 | NDEF Message= 3(0x03) (1 byte)                              |        
 +-------------------------------------------------------------+
 | LEGTH=69 (0x45)(1 byte)                                     |
 +------+------+------+------+------+--------------------------+
 | MB=1 | ME=0 | CF=0 | SR=1 | IL=0 | TNF=2 (MIME type record) |(0x92)
 +------+------+------+------+------+--------------------------+
 | TYPE LENGTH=09 (0x90)                                       |
 +-------------------------------------------------------------+
 | PAYLOAD LENGTH=17 (0x11)(1 byte)                            |
 +-------------------------------------------------------------+
 | TYPE="co/info"  (9 byte)                                    |
 +-------------------------------------------------------------+
 | PAYLOAD="bd://aa:bb:cc:dd:ee:ff" (55 byte)                  |
 +------+------+------+------+------+--------------------------+
 | MB=0 | ME=1 | CF=0 | SR=1 | IL=0 | TNF=4 (External type)    |
 +------+------+------+------+------+--------------------------+
 | TYPE LENGTH=15 (0x0F)                                       |
 +-------------------------------------------------------------+
 | PAYLOAD LENGTH=22 (0x16)                                    |
 +-------------------------------------------------------------+
 | TYPE="android.com:pkg"                                      |
 +-------------------------------------------------------------+
 | PAYLOAD="com.your.app.package"                              |
 +-------------------------------------------------------------+

首先:Whosebug 是关于编程的,而不是获取工具和现有应用程序推荐的正确位置。

尽管如此,我相信这个问题的部分内容对 Android 开发人员也很有价值。

您在问题中显示的是 NDEF 消息。此 NDEF 消息由一个 MIME 类型记录和一个外部类型记录组成。

MIME 类型记录包含 MIME 类型 "co/info"(实际上是格式错误的 MIME 类型,因为它不遵循相应的 RFC!)和数据值 "bd://aa:bb:cc:dd:ee:ff"。在 Android 应用程序中,您可以使用 NdefRecord.createMime():

方法生成此记录
NdefRecord r1 = NdefRecord.createMime("co/info",
                                      "bd://aa:bb:cc:dd:ee:ff".getBytes("US-ASCII"));

NFC 论坛外部类型记录是应用程序包 "com.your.app.package" 的 Android 应用程序记录(类型名称 "android.com:pkg")。您可以使用 NdefRecord.createApplicationRecord() 方法生成该记录:

NdefRecord r2 = NdefRecord.createApplicationRecord("com.your.app.package");

然后您可以 assemble 将这两条记录放入 NDEF 消息中:

NdefMessage msg = new NdefMessage(r1, r2);

最后,您可以将该消息写入 NFC 标签(假设您已经从 NFC 标签发现意图中获得了标签句柄,并且该标签已经针对 NDEF 进行了格式化):

Ndef ndef = Ndef.get(tag);
ndef.connect();
ndef.writeNdefMessage(msg);
ndef.close();