我开发了一个系统,可以使用带有 PN532 芯片的阅读器读取 NFC 标签。它工作正常。我可以阅读 Mifare Classic 和 Mifare Ultralight 标签。
现在我想使用带有 Android 4.4.2 的 Nexus 平板电脑来模拟标签。我没有android开发经验,但我认为这是可能的。
我在 Nexus 平板电脑中设置了 NFC 通信,但我认为我必须下载或编写一些应用程序来模拟标签和 NDEF 通信。
最简单的方法是什么?
这取决于您拥有的 Nexus 平板电脑:
Nexus 7(第一代/2012 版):此设备使用 NXP 的 PN544 NFC 控制器。似乎目前无法在这些设备上使用 Android 4.4+ 执行基于主机的卡模拟(请参阅此问题和我的答案)。
Nexus 7(第二代/2013 版)和 Nexus 10:这些设备使用 Broadcom 的 NFC 控制器。因此,您可以使用 Android 4.4 的 HCE API 来模拟非接触式智能卡。
使用 Android 的 HCE API,您将模拟 ISO 14443-4 智能卡,并且您只能使用 ISO 7816-4 中定义的应用程序选择和 APDU 格式进行通信。您将首先创建并注册 HCE 服务(请参阅API 指南)。然后,您可以使用服务的方法处理传入的 APDU processCommandApdu()
(请参阅此答案)。
如果您的读卡器端应用程序当前仅处理 MIFARE Classic 和 Ultralight,则您必须将其扩展为也与基于 ISO 14443-4/APDU 的智能卡进行通信。(在 ANdroid 的 HCE API 之上无法模拟基于非 APDU 的卡,如 MIFARE Classic 和 Ultralight。)PN532 通常会为您处理大部分内容,因此一旦您发现这样的智能卡(例如带有InListPassiveTarget
),它应该自动处理 ISO 14443-4 传输协议,您可以使用该命令直接发送 APDU 命令InDataExchange
。
如果您想通过 HCE 交换 NDEF 消息,一旦您启动并运行基于 APDU 的通信,您可以在 Android HCE 服务中实现 NFC 论坛的 Type 4 标签操作规范(从NFC 论坛的网站获取)以模拟 Type 4 NDEF 标签。