Можно ли одним касанием обмениваться данными с двумя устройствами Android через NFC?

Я хочу создать приложение для обмена информацией между двумя устройствами через NFC.

Я знаю, как заставить один мобильный телефон отправлять информацию другому с помощью Android Beam. Что я не знаю, так это то, как два телефона могли отправлять данные друг другу одним касанием.

Это возможно? Если да, то как?

2 ответа

Решение

Это зависит от того, чего вы пытаетесь достичь и какую версию Android вы используете:

Оба устройства с Android < 4.0

Оба устройства могут отправлять одно сообщение NDEF, каждое из которых не требует взаимодействия с пользователем. Сообщения не могут зависеть друг от друга (т.е. не возможно, что одно устройство отправляет сообщение, а другое отправляет ответ на это). Вы бы использовали комбинацию enableForegroundNdefPush() а также enableForegroundDispatch() для достижения этой цели.

Как минимум одно устройство с Android < 4.4

Оба устройства могут (теоретически) отправлять одно сообщение NDEF за касание, но взаимодействие с пользователем требуется на обоих устройствах (т. Е. Пользователь должен касаться пользовательского интерфейса Beam). Более того, пользовательский интерфейс Beam на обоих устройствах должен касаться практически одновременно. В противном случае пользовательский интерфейс Beam на другом устройстве будет прерван из-за полученного сообщения NDEF. Таким образом, это "решение" не совсем пригодно для использования. Вы бы использовали комбинацию setNdefPushMessage*() а также enableForegroundDispatch() для достижения этой цели.

Оба устройства с Android 4.4+

Начиная с версии 4.4, Android имеет две новые функции:

Когда вы комбинируете эту функцию (то есть у вас есть служба эмуляции карты HCE на одном устройстве и переводите второе устройство в режим считывателя), оба устройства могут связываться друг с другом (реальная двунаправленная связь) с использованием APDU ISO 7816-4.,

Это возможно, как объяснено онлайн здесь. Существует также демонстрация API в демонстрационных версиях API, поставляемых с SDK, в которых обсуждается это.

Однако имейте в виду, что NFC имеет очень маленький размер полезной нагрузки, и вы вряд ли сможете передавать любые значительные данные с его помощью. Вместо этого следует использовать NFC для быстрой настройки соединений Bluetooth или другой формы беспроводной передачи данных, например WiFi direct, которая затем может использоваться для передачи больших объемов данных.

Другие вопросы по тегам