3

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

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

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

我知道一个 NFC 标签上的 2 条 NDEF 消息/记录的答案 - Android说你不能在一个标签上有两条单独的消息,一条消息中只有多个记录,但是通过查看包装 NDEF 的 TLV 格式,那里似乎没有什么能真正阻止第二个 NDEF 消息出现在最后一个 0xFE 标记字节之前?

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

4

3 回答 3

3

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

"action a,action b" 

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

于 2013-07-05T21:11:17.810 回答
3

是的。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});
于 2015-04-14T10:49:03.570 回答
3

所以只是总结一下:我已经将一个包含两条单独的 NDEF消息的标签组合在一起,而不是一条带有两条记录的消息。在直接在标签上的字节级别,这看起来如下:

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

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

于 2013-07-06T19:47:41.667 回答