首先,不存在点对点 NFC 标签。设备可以是或者对等设备或 NFC 标签,但不能同时是两者。 (请注意,设备仍然可以支持两种模式,但不能同时在两种模式下进行通信。)
因此,如果您使用 NFC 标签(例如您的 NFC Forum Type 4 标签)进行通信,则涉及 no 点对点模式(因此 no Beam) .在 Android 上,您可以使用 NFC 标签或非接触式智能卡进行通信(真正的双向通信)。
如果是您的 Type 4 标签,您将首先在发现标签时检索 NFC 意图。您可以通过在应用程序的清单中注册特定的 NDEF 记录或标签类型或使用foreground dispatch 系统来做到这一点(即,如果您想在您的活动已经在前台时检测标签)。下一步是从 Intent 中获取标签句柄(Tag 对象):
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
那么对于 Type 4 标签,您有两个选项。如果您想使用 NDEF 消息读/写操作与标签通信,您将获得标签的 Ndef 对象:
Ndef ndefTag = Ndef.get(tag);
然后您可以使用connect() 方法连接到标签,getNdefMessage() 从标签中读取当前的 NDEF 消息,并使用writeNdefMessage(...) 方法将新的 NDEF 消息写入标签。
或者如果你想与标签进行低级通信,你可以使用IsoDep技术进行连接:
IsoDep isoDep = IsoDep.get(tag);
您可以使用connect() 方法连接到标签,并使用transceive(...) 方法与标签交换ISO 7816-4 APDU(或可能的专有命令)。