【问题标题】:Android: putting multiple NDEF messages in one NFC tag?Android:将多个 NDEF 消息放在一个 NFC 标签中?
【发布时间】:2013-07-04 00:35:44
【问题描述】:

我正在尝试创建一个将触发两个单独操作的 NFC 标签:

  • 打开蓝牙连接
  • 启动应用程序(或前往 Play 商店)

我使用 nfc-eclipse-plugin 创建了一条包含两条合适记录的消息,但是,当写入标签时,它总是只触发 first 动作。两者都单独工作,但第二个总是被忽略。

我知道2 NDEF mesages/records on one NFC tag - Android 的答案说你不能在一个标签上有两条单独的消息,一条消息中只有多条记录,但是从包装 NDEF 的 TLV 格式来看,似乎没有什么可做的实际阻止第二个 NDEF 消息出现在最后一个 0xFE 标记字节之前?

是否有人对如何实现我在一个标签上执行两个单独操作的目标有任何其他想法?

【问题讨论】:

    标签: android nfc ndef


    【解决方案1】:

    是的。 Android 不支持多个 NDEF 消息。它只允许一个。 并且您可以将多个 NDEF 记录添加到单个 NDEF 消息中。

    NdefRecord text1 = new NdefRecord(NdefRecord.TNF_WELL_KNOWN,
                                      message1.getBytes(),
                                      new byte[]{},
                                      message1.getBytes());
    NdefRecord text2 = new NdefRecord(NdefRecord.TNF_WELL_KNOWN,
                                      message2.getBytes(),
                                      new byte[]{},
                                      message2.getBytes());
    NdefMessage mNdefMessage = new NdefMessage(new NdefRecord[]{text1,text2});
    

    【讨论】:

    • NDEF 记录可以是类似的类型吗?比如两种 SMS 或两种 BT 切换消息类型。?
    【解决方案2】:

    总结一下:我将一个包含两个单独的 NDEF messages 的标签拼凑在一起,而不是一个包含两个 records 的消息。直接在标签上的字节级别,如下所示:

    0x03 <length1> <message1> ... 0x03 <length2> <message2> ... 0xFE
    

    NFC Type 2 规范明确允许这样做。然而,正如怀疑的那样,Android 会默默地忽略第一条消息之外的任何内容。

    【讨论】:

    • +1 用于分享。结果有点奇怪,因为 Android 在 EXTRA_NDEF_MESSAGES 中返回了一个 NdefMessage[] 数组。
    【解决方案3】:

    你说得对,Android 不支持两条 NDEF 消息。但是您能否拥有一条包含您的两种操作的 NDEF 消息?我的意思是,你的有效载荷可能是这样的:

    "action a,action b" 
    

    并让您的应用程序来解析该有效负载并确定它需要做什么?

    【讨论】:

    • 其实我指的是第三方应用,我不能随便改。但是,对于我自己编写的应用程序,这可能有效(如果“action a”是启动应用程序的 AndroidAppRecord)?
    • 嗯,好的。我在想你可以以某种方式解析你的有效载荷并构建你需要的意图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多