Android:将多个NDEF消息放在一个NFC标签中?

时间:2013-07-05 21:02:48

标签: android nfc ndef

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

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

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

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

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

3 个答案:

答案 0 :(得分:3)

你是对的,Android不支持两条NDEF消息。但是你有一条NDEF消息包含你的两个动作吗?我的意思是,你的有效载荷可能是这样的:

"action a,action b" 

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

答案 1 :(得分:3)

所以只是将它包装起来:我已经将包含两个单独的NDEF 消息的标记混合在一起,而不是一个包含两个记录的消息。在标签上的字节级别,如下所示:

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

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

答案 2 :(得分: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});