0

我一直在研究是否可以使用 Android 应用程序在 NFC 设备上执行多个读写操作。我发现 Android Beam 用于两台设备之间的点对点 (P2P) 类型的数据交换,但这是否意味着其他非 Android 设备必须是 P2P NFC 标签。因为我当前使用的标签是使用 NDEF 的 Type 4 标签。

是否可以通过将手机放在同一个位置来使用 NFC 设备执行多个读取和写入操作?因为目前我只能在您将手机放在 NFC 标签上并读取它的地方让它工作,然后您必须将手机移开并再次执行交易以再次执行交易。这显然是读取 NFC 标签的自然过程。

请任何人都可以帮助我解决这个难题或给我任何提示。先感谢您。

4

1 回答 1

2

首先,不存在点对点 NFC 标签之类的东西。设备可以是点对点设备或 NFC 标签,但不能同时是两者。(请注意,设备仍然可以支持两种模式,但不能同时在两种模式下通信。)

因此,如果您使用 NFC 标签(如您的 NFC Forum Type 4 标签)进行通信,则不涉及点对点模式(因此涉及 Beam)。在 Android 上,您可以使用 NFC 标签或非接触式智能卡进行通信(真正的双向通信)。

如果是您的 Type 4 标签,您将首先在发现标签时检索 NFC 意图。您可以通过在应用程序的清单中注册特定的 NDEF 记录或标签类型或使用前台调度系统(即,如果您想在您的活动已经在前台时检测标签)来做到这一点。下一步是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(或可能的专有命令)的方法。

于 2014-04-10T15:35:50.557 回答