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