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