是否可以从Android设备对NFC标签执行多个读写操作

时间:2014-04-09 08:41:48

标签: android nfc ndef nfc-p2p

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

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

任何人都可以帮助我解决这个难题,或者给我任何提示。提前谢谢。

1 个答案:

答案 0 :(得分:1)

首先,没有点对点NFC标签这样的东西。设备可以 对等设备或NFC标签,但不能同时为两者。 (注意,设备仍然可以支持两种模式,但不能同时在两种模式下通信。)

因此,如果您使用NFC标签(如NFC论坛类型4标签)进行通信,则会出现点对点模式(因此 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(或可能是专有命令)。