【问题标题】:Is it possible to perform multiple read and write operations on an NFC Tag from an Android device是否可以从 Android 设备对 NFC 标签执行多个读写操作
【发布时间】:2014-04-09 08:41:48
【问题描述】:

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

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

请任何人帮助我解决这个难题或给我任何提示。提前谢谢你。

【问题讨论】:

  • 但是为什么需要多次写入呢?

标签: android nfc ndef nfc-p2p


【解决方案1】:

首先,不存在点对点 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(或可能的专有命令)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    相关资源
    最近更新 更多