Как мое приложение может узнать, какой режим NFC включен?

Я обнаружил, что устройства Android поддерживают три режима NFC: чтение/запись, P2P и эмуляция карты.

Может ли мое приложение проверить, какой режим в данный момент включен?


person hoonj    schedule 24.04.2015    source источник


Ответы (1)


Нет, ваше приложение не может на самом деле проверить, какой режим включен в данный момент. Дело в том, что по умолчанию Android-устройство будет периодически проверять наличие всех трех режимов (на самом деле это немного сложнее: эти три режима сами по себе разбиты на несколько частей, каждая из которых опрашивает определенную технологию). Таким образом, пока экран включен, вы можете ожидать, что Android-устройство будет циклически переключаться между прослушиванием других считывателей и опросом для различных типов технологий тегов и устройств с одноранговым режимом. Это происходит независимо от того, зарегистрировались ли вы для отправки сообщения в одноранговом режиме, зарегистрировано ли приложение для HCE или ваше приложение зарегистрировано для целей обнаружения NFC. Даже если вы отключите Android Beam в настройках, устройство все равно будет опрашивать одноранговый режим.

Только если вы явно отключите эмуляцию карты и P2P с помощью API режима чтения (доступно на Android 4.4+), ваше приложение может управлять этим только чтением Режим /writer активен (и он даже может контролировать, какие технологии тегов следует опрашивать).

Таким образом, ваше приложение может узнать, какие режимы оно включило, и сделать некоторые предположения, например.

  • если экран включен и режим чтения/записи не был явно принудительно активирован с помощью API режима чтения, все три режима, скорее всего, будут активны.
  • если экран выключен, активным может быть только режим эмуляции карты может (хотя это зависит от устройства, и HCE обычно недоступен).
person Michael Roland    schedule 28.04.2015