使用提供的数据在 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();
谁能告诉我如何将以下信息写入 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();