如何检测 NFC 标签被移除

How to detect NFC tag was removed

我是 NFC 技术的新手。我正在尝试读写 Mifare Classic 4K 标签。我成功地阅读和写作。我可以在 onNewIntent 操作上检测到标签。

我的问题是我无法检测到 NFC 标签何时被移除(类似于 onNewIntent 检测标签时)。

我该如何解决这个问题?

如果标签从 reader 中删除,则没有事件通知您的应用程序。检测移除的典型方法是主动轮询标签(例如,通过读取 NDEF 消息或数据块),直到您收到 IOException 指示与标签的通信丢失。


更新

从 Android API 级别 24 开始,这不再正确。现在有一个方法

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

可用于注册回调以在删除标签时获取通知。不过此方法可能存在一些问题,因此请仔细阅读 documentation 上的 side-effects/corner 个案例。

您可以打电话查询 isoDep.isConnected(); 在 IsoDep