Можно ли одним касанием обмениваться данными с двумя устройствами 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, которая затем может использоваться для передачи больших объемов данных.