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

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

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

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


person diego.goncalves    schedule 22.05.2014    source источник
comment
Пример здесь: developer.android.com/guide/topics/connectivity/nfc /nfc.html   -  person ashishduh    schedule 22.05.2014


Ответы (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.

person Michael Roland    schedule 22.05.2014
comment
у вас есть пример того, как это сделать с обоими устройствами с Android ‹ 4.0? - person diego.goncalves; 28.05.2014
comment
@diego.goncalves См. это для отправки сообщения над Лучом. и это для получения с использованием переднего плана отправлять. - person Michael Roland; 28.05.2014
comment
Привет, @MichaelRoland, что ты имеешь в виду под настоящей двусторонней связью? Я хочу настроить карту HCE на устройстве A и отправить данные на устройство чтения на устройстве B (это то, что делает образец). Что, если я хочу продолжить этот процесс, отправив сумму с устройства B обратно на устройство A? Это достижимо? - person user1872384; 04.09.2015
comment
Используете HCE? Конечно. Устройство B могло бы прочитать данные из A, а затем отправить/записать некоторые данные в A. Используя Beam, это было бы (легко) невозможно. - person Michael Roland; 11.09.2015

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

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

person Raghav Sood    schedule 22.05.2014