如何找出NFC标签现在仍在Android的范围内?

wal*_*sli 5 tags android nfc android-intent

据我所知,当Android手机触摸到NFC标签时,它将发送一个事件(NDEF_DISCOVERED意向),但是Android似乎并不在乎此标签是否保留在原地。我的解决方案是锁定屏幕然后解锁。如果标签仍然存在,我可以再次阅读。这显然是一种愚蠢的方式。有什么更聪明的方法吗?

Mic*_*and 4

作为您的活动收到的 NFC Intent 的一部分,您还将Tag在 Intent extra 中收到一个标签句柄(对象):

Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
Run Code Online (Sandbox Code Playgroud)

根据标签的类型,您可以获得特定标签技术的实例。例如,如果是 NDEF 标签,您可以获得:

Ndef ndefTag = Ndef.get(tag);
Run Code Online (Sandbox Code Playgroud)

然后您可以使用 connect() 方法连接到标签:

ndefTag.connect();
Run Code Online (Sandbox Code Playgroud)

之后,您可以通过定期尝试读取标签来检查标签是否仍然“连接”到设备:

try {
    ndefTag.getNdefMessage();
} catch (IOException e) {
    // if you receive an IOException, contact to the tag has been lost
}
Run Code Online (Sandbox Code Playgroud)

请注意,只有当您的 Activity 始终位于前台并且屏幕保持打开状态时,这才有效。