Как определить, что тег NFC был удален

Я новичок в технологии NFC. Я пытаюсь читать и писать теги Mifare Classic 4K. Я преуспел в чтении и письме. Я могу обнаружить тег в onNewIntent действии.

Моя проблема в том, что я не мог определить, когда была удалена метка NFC (аналогично onNewIntent при обнаружении метки).

Как я могу решить эту проблему?


person MUMBUÇOĞLU    schedule 21.03.2016    source источник
comment
Поймать IO_EXCEPTION   -  person M D    schedule 21.03.2016
comment
Я хочу немедленно сообщить мне об этом, когда он будет удален. А не в процессе чтения и записи.   -  person MUMBUÇOĞLU    schedule 21.03.2016
comment
Перехватите IO отображение Dailog с ошибкой. что случилось с этим?   -  person M D    schedule 21.03.2016
comment
Я имею в виду, должен ли я поймать исключение ввода-вывода, при какой операции, кроме чтения и записи.   -  person MUMBUÇOĞLU    schedule 21.03.2016


Ответы (2)


Вы можете проверить, вызвав isoDep.isConnected(); в Изодепе

person Paul Chu    schedule 05.06.2020
comment
Интересно, как бы вы сделали это для тега MIFARE 4K. Они не предоставляют интерфейс IsoDep. Также обратите внимание, что вызов isConnected не настолько надежен, как можно было бы ожидать. - person Michael Roland; 20.06.2020
comment
Я использую режим чтения карт, а не по намерению Android. - person Paul Chu; 03.06.2021

Не существует события, которое уведомляет ваше приложение об удалении тега из средства чтения. Типичный подход к обнаружению удаления заключается в активном опросе тега (например, путем чтения сообщения NDEF или блока данных) до тех пор, пока не будет получено исключение IOException, указывающее, что связь с тегом была потеряна.


ОБНОВИТЬ

Начиная с уровня Android API 24, это уже не так. Теперь есть метод

NfcAdapter.ignore(tag, debounceMs, tagRemovedListener, handler);

который можно использовать для регистрации обратного вызова для получения уведомлений при удалении тега. Однако этот метод может иметь некоторые проблемы, поэтому внимательно прочитайте документация о побочных эффектах/краевых случаях.

person Michael Roland    schedule 14.04.2016
comment
Он не поддерживается системной службой nfc в самом андроиде? или просто андроид не предоставляет API для этого? - person Yash; 21.07.2016
comment
@Yashasvi Стек NFC, безусловно, знает, когда тег исчез из поля, и выполняет некоторую внутреннюю очистку, но на прикладном уровне нет механизма уведомления. - person Michael Roland; 21.07.2016
comment
@Michael Roland, пожалуйста, не могли бы вы привести пример того, как мы можем использовать NFCAdapter.ignore? - person NMMA; 08.02.2019