我正在为 Android 开发一个 nfc 应用程序,并且想处理一个可以支持 NFC-V 或 NFC-A 协议的标签。
问题是,当我用手机(Galaxy S2 plus,运行 android 4.1.2)接近标签时,它 90% 的时间检测到 NFC-V 协议,10% 的时间检测到 NFC-A 协议。
我想做的是强制我的手机只关注两种协议之一。这意味着我想在触摸标签之前将手机配置为仅收听 NFC-V 协议。
这可能吗?
不幸的是,这是不可能的。
NFC 硬件对所有不同的协议进行时间复用。如果您将标签放在天线附近,并且 NFC 芯片当前正在感应 NFC-V,您将获得 NFC-V。与 NFC-A 相同。
从 Android 4.4 开始,这可以使用 Android NFC reader-mode API:
NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
nfcAdapter.enableReaderMode(this, this, NfcAdapter.FLAG_READER_NFC_V, null);
然后,您可以Tag
通过 reader-callback 检索对象:
public void onTagDiscovered (Tag tag) {
...
}