Android NFC: протокол SNEP и ответ P2P
Я пытаюсь реализовать P2P-связь между двумя телефонами Android (один из них будет заменен независимым устройством в конце). Я видел, что Android 4 поддерживает SNEP, который публикуется форумом NFC и должен быть доступен на устройствах без Android.
У меня есть следующий учебник Google для NFC P2P (http://developer.android.com/guide/topics/nfc/nfc.html#p2p), и я могу отправить некоторую информацию с одного телефона на другой, но у меня есть несколько вопросы:
- Android Beam - это просто название для NFC или протокол Android, работающий над SNEP / NPP? Если это протокол, как сделать NFC P2P без Beam?
- Как настроить использование SNEP?
- Как отправить ответ на другое устройство, когда соединение инициализировано (получено первое сообщение)?
Спасибо за помощь!!!
3 ответа
Android Beam - это просто имя, правильно. Устройства используют SNEP по умолчанию, если это не удается, он пробует NPP. Вы не можете отправить ответ от принимающего устройства отправителю. Вы можете использовать только обратный вызов, чтобы получить уведомление об успешном нажатии:
http://developer.android.com/reference/android/nfc/NfcAdapter.OnNdefPushCompleteCallback.html
Чтобы дать более четкое объяснение:
Android Beam - это просто название для NFC или протокол Android, работающий над SNEP / NPP? Если это протокол, как сделать NFC P2P без Beam?
Луч Android - это особенность ОС Android. Это высокоуровневый механизм обмена сообщениями NDEF поверх SNEP/NPP. На данный момент одноранговый режим (на Android) доступен только через Android Beam, который нельзя использовать для двунаправленной связи.
Как настроить использование SNEP?
Если вы хотите использовать SNEP на Android, (я думаю) единственный способ - это запрограммировать собственную реализацию SNEP поверх протокола ISO-DEP. Поскольку SNEP находится на вершине LLCP, вам также необходимо создать собственную реализацию LLCP. Это не легко..
Как отправить ответ на другое устройство при инициализации соединения (первое полученное сообщение)
С SNEP вы не можете. Как сказал @robertly, создать сообщение обратного вызова возможно только. Если вы хотите истинно двунаправленную связь, используйте режимы чтения / записи и эмуляции карт.
На странице кода Google ismb-snep-java объясняется связь и передача данных с использованием протокола SNEP, и я проверил его, и он работает. После поиска в PDF-файлах как из ACR, так и из Android, я считаю, что вам просто нужно сделать несколько твиков, чтобы заставить его работать так, как вы хотите.