2013-07-05 3 views
2

Я пытаюсь создать тег NFC, который будет запускать два отдельных действия:Android: добавление нескольких сообщений NDEF в один тег NFC?

  • открыть соединение Bluetooth
  • запуск приложения (или собирается в игровой магазин)

Я ve использовал nfc-eclipse-plugin для создания сообщения, содержащего две подходящие записи, однако при написании в теге он всегда запускает только действие. Обе работают индивидуально, но вторая всегда игнорируется.

Я знаю, что ответ 2 NDEF mesages/records on one NFC tag - Android говорит, что у вас не может быть двух отдельных сообщений в теге, только несколько записей в сообщении, но, глядя на формат TLV, который обертывает NDEF, кажется, нет ничего, на самом деле предотвратить появление второго сообщения NDEF перед окончательным байтом маркера 0xFE?

Есть ли у кого-нибудь другие идеи, как достичь моей цели иметь два отдельных действия над одним тегом?

ответ

2

Вы правы, Android не поддерживает два сообщения NDEF. Но возможно ли иметь одно сообщение NDEF, содержащее оба ваших действия? То, что я имею в виду, может быть ваша полезная нагрузка что-то вроде:

"action a,action b" 

и оставить его в приложение для разбора этой полезной нагрузки и определить, что он должен делать?

+0

Собственно, я имел в виду стороннее приложение, которое я не могу легко изменить. Однако для приложения, которое я пишу сам, это может сработать (если «action a» является AndroidAppRecord для запуска приложения)? –

+0

А, ок. Я думал, что вы можете каким-то образом разобрать свою полезную нагрузку и построить необходимые вам цели. – Jon

3

Так просто обернуть это: Я взломал вместе тег, содержащий два отдельных NDEF сообщения в отличие от одного сообщения с двумя записей. На уровне байта непосредственно на теге это выглядит следующим образом:

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

Спецификация NFC Type 2 явно позволяет это. Тем не менее, Android молча игнорирует что-либо за пределами первого сообщения, как подозревали.

+0

+1 для обмена. Результат несколько странный, так как Android возвращает массив NdefMessage [], который можно использовать в EXTRA_NDEF_MESSAGES. – ThomasRS

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}); 
+0

может записывать запись в формате NDEF из аналогичных типов. Если есть два типа сообщений для передачи SMS или двух BT.? – Raulp

Смежные вопросы