【问题标题】:Write data in NFC tag with the provided data使用提供的数据在 NFC 标签中写入数据
【发布时间】:2015-12-16 05:11:47
【问题描述】:

谁能告诉我如何将以下信息写入 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"                              |
 +-------------------------------------------------------------+

【问题讨论】:

    标签: android tags nfc ndef


    【解决方案1】:

    首先:Stackoverflow 是关于编程的,而不是获取工具和现有应用建议的正确位置。

    不过,我相信这个问题的某些部分对 Android 开发人员也很有价值。

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

    MIME 类型记录包含数据值“bd://aa:bb:cc:dd:ee”的 MIME 类型“co/info”(实际上是一种格式错误的 MIME 类型,因为它不遵循相应的 RFC!) :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");
    

    然后您可以将这两条记录组合成一条 NDEF 消息:

    NdefMessage msg = new NdefMessage(r1, r2);
    

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

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

    【讨论】:

    • 非常感谢..抱歉回复晚了,我被其他一些高优先级任务卡住了。
    • 它为我磨损了..但它在内存中的 [00] 处写入数据并继续,但我希望它从 [04] 开始写入。谁能帮我怎么做?
    • @Bharani 上面的代码将数据准确地写入应该存储在 NFC 论坛标签上的位置(例如,从类型 2 标签的第 4 块开始)。此外,它将数据包装在该标记类型所需的任何数据结构中(例如,类型 2 标记上的 NDEF 消息 TLV)。
    • 你甚至认为默认情况下它会从第 4 个块开始写入,但在写入之后,我可以看到它从 1 个块开始。我使用的是 MIFARE ISO 14443 NTAG213 TYPE A 标签。不知道是什么原因?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    相关资源
    最近更新 更多