Система диспетчеризации переднего плана
Система диспетчеризации переднего плана (NfcAdapter.enableForegroundDispatch()
) существует, начиная с Android 2.3.3 (которая, по сути, является началом Android NFC). Следовательно, этот метод поддерживается на всех устройствах Android с возможностями NFC.
Система диспетчеризации переднего плана используется для предоставления действия, которое в настоящее время находится в приоритете переднего плана, при обработке событий обнаружения NFC (т. е. обнаруженных тегов NFC и сообщений NDEF, полученных от одноранговых устройств). Это означает, что даже если другое приложение зарегистрировано (с помощью фильтра намерений в AndroidManifest.xml
) для определенного типа тега или данных NDEF, событие NFC все равно будет передано активному действию вместо этого другого действия. Следовательно, этот метод не меняет способ, которым Android прослушивает устройства NFC (теги NFC, устройства P2P), он только изменяет приоритет обработки обнаруженных устройств.
API режима чтения
API режима чтения (NfcAdapter.enableReaderMode()
) был представлен в Android 4.4. Следовательно, не все устройства Android с возможностями NFC поддерживают этот метод.
В отличие от системы диспетчеризации переднего плана, API-интерфейс режима чтения меняет способ, которым Android прослушивает устройства NFC. API режима чтения отключает одноранговый режим. Это, например, позволяет вам обнаруживать режим эмуляции карты других устройств, на которых одновременно включены одноранговый режим и режим эмуляции карты (как в случае с Android HCE). (Обычно такое устройство будет обнаружено как одноранговое устройство, и приложение Android не сможет получить доступ к функции эмуляции карты.)
Кроме того, вы можете изменить определенные параметры режима считывателя NFC, например. ты сможешь:
- определить технологии тегов, которые опрашивает считыватель NFC,
- определить интервал, в течение которого Android проверяет наличие тега, отправляя тегу определенную последовательность команд и проверяя, получен ли ответ,
- запретить Android автоматически отправлять команды тегу, чтобы проверить, содержит ли тег сообщение NDEF,
- остановить Android от воспроизведения звука при обнаружении тега.
Примечание. На Android 10 поведение может отличаться.
Согласно комментарию Адама Джонса, приведенное выше может быть неверным для Android 10 (он тестировал на Pixel 2). При использовании только enableReaderMode()
(без дополнительного enableForegroundDispatch()
) устройства, похоже, отображают тост «Нет поддерживаемого приложения для этого тега NFC», хотя теги правильно отправляются зарегистрированному методу обратного вызова режима чтения (onTagDiscovered()
).
person
Michael Roland
schedule
18.11.2015
enableReaderMode
? - person IgorGanapolsky   schedule 20.08.2020