Android: как изменить приоритет протокола NFC?

У меня есть собственное приложение для Android (приложение A), которое считывает и записывает теги NFC и теги типа A ISO-14443. Он хорошо работает на многих устройствах Android.

Я хочу передать роль тега ISO-14443 своему Nexus5, поэтому я реализовал свое собственное приложение HCE (эмуляция хост-карты) (приложение B) на своем Nexus5. Когда я прикасаюсь к Nexus5 на внешнем считывателе NFC (который использует ISO 14443), он работает отлично.

Однако, когда я касаюсь Nexus5 (приложение B) на Nexus7 (работает приложение A), начинаются последовательности обмена данными p2p (луч Android).

Даже после того, как я отключу функции луча Android на обоих устройствах, ничего не изменится. Nexus7 не отображает экран «Touched to Beam», но воспроизводит звук обнаружения p2p.

LogCat показывает, что Nexus7 пытается установить соединение LLCP.

Я хочу, чтобы Nexus7 сосредоточился на обнаружении ISO-14443 HCE Nexus5, а не на луче Android.

Как изменить приоритет обнаружения NFC, чтобы отдать предпочтение ISO-14443, а не Android beam?


person Jin    schedule 29.12.2013    source источник


Ответы (1)


Решение доступно только на Android 4.4 Kitkat (доступно для Nexus 7). Вам необходимо включить так называемый «режим чтения», который предназначен для обработки этой конкретной ситуации, используя enableReaderMode().

В этом режиме контроллер NFC будет действовать только как устройство чтения/записи тегов NFC, тем самым отключая любые режимы одноранговой связи (Android Beam) и режимы эмуляции карты адаптера NFC на этом устройстве. [...] Для взаимодействия с тегами, которые эмулируются на другом устройстве Android с помощью эмуляции карты Android на основе хоста, рекомендуемыми флагами являются FLAG_READER_NFC_A и FLAG_READER_SKIP_NDEF_CHECK.

person NFC guy    schedule 01.01.2014
comment
Оно работает! Теперь мой nexus7 распознает эмуляцию хост-карты. нексуса5. - person Jin; 02.01.2014