【问题标题】:Android: card emulation - read ndef message with PN532 nfc moduleAndroid:卡模拟 - 使用 PN532 nfc 模块读取 ndef 消息
【发布时间】:2015-07-23 03:11:01
【问题描述】:

我有一部 LG D320n Android 手机、elechouse 的 PN532 nfc 模块和 Stollmann 的 NFCPlayer,我可以使用它们正确读取 NFC 标签。

我从这里测试了一个样本:https://github.com/grundid/host-card-emulation-sample

当我用另一台 Android 设备作为阅读器读取一个 Android 设备作为标签时,它工作正常。但我无法通过 NFCPlayer 使用 PN532 阅读器将 Android 设备作为标签读取。我希望阅读器从充当标签的 Android 设备读取 NDEF 消息,但 NFCPlayer 甚至无法识别 Android 设备。我想我必须在 Android 端写一些修改,但我不知道该怎么做。我认为我对 NFC 通信和 HCE 的工作方式没有足够的了解,即使我读过这篇文章: https://developer.android.com/guide/topics/connectivity/nfc/hce.html

我非常感谢任何可以帮助我了解我在这里缺少什么的指南。

【问题讨论】:

    标签: android tags nfc ndef hce


    【解决方案1】:

    grundid example app 应该被 NFCPlayer 发现为“旧标签”(选项卡“R/W:旧版”),因为它没有实现 NDEF 抽象层。在该选项卡上,您可以与模拟智能卡交换 PDU(在 HCE 的情况下为 APDU)。示例应用的有效 APDU 是

    00 A4 04 00 07 F0010203040506 00
    

    您可以通过在 PDU 字段中键入此 APDU 并单击“Exch. PDU”按钮来发送此 APDU。请注意,grunid HCE 应用程序甚至没有实现 ISO/IEC 7816-4 响应 APDU。因此,您可能会遇到一些非接触式智能卡读卡器的问题。

    如果您希望您的模拟智能卡被 NFCPlayer 发现为包含 NDEF 消息的 NFC Forum Type 4 标签(选项卡“R/W:NDEF”),您需要实现 NFC Forum Type 4 标签操作规范(如由NFC Forum 定义。该规范定义了数据必须如何存储在(模拟的)ISO/IEC 14443-4 智能卡上才能被解释为 NDEF 标记。作为起点,您可以使用此NDEF on HCE example app(虽然,质量并且该代码的可靠性值得怀疑)。此示例实现了用于存储 NDEF 数据的智能卡文件系统。

    【讨论】:

    • 对于这么晚的回复,我深表歉意。我还有一些其他项目必须先完成。你的回答对我帮助很大。谢谢! (我发现我不需要 ndef 消息,所以我没有测试这部分)。非常感谢!
    • 嗨,我还有一个问题。它与带有 CM 的 OnePluse One 一起工作顺利。在 logcat 我有这些输出:07-08 10:30:03.445 1468-26171/? D/BrcmNfcJni: RoutingManager::stackCallback: event=0x18 07-08 10:30:03.450 1468-26171/? D/HostEmulationManager:notifyHostEmulationActivated 07-08 10:30:03.452 1468-26171/? D/BrcmNfcJni:RoutingManager::stackCallback: event=0x17 07-08 10:30:03.452 1468-26171/? D/BrcmNfcJni:RoutingManager::stackCallback: NFA_CE_DATA_EVT;统计=0x0; h=0x301;数据长度=13
    • 并且 NFCPlayer 发现我的 Android 设备为 ISO 14443-A 卡,ID 为 1234,然后我可以交换。 PDU。但是对于另一台设备(LG d320n)它不起作用...... NFCPlayer 无法识别它并且 RoutingManager::stackCallback: event=0x18 或 notifyHostEmulationActivated 没有被调用,因为我可以在 logcat 中看到它。这是为什么?有趣的是,oneplus 设备正在通过 grundid 应用程序(接收器模式)识别 LG。提前致谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    相关资源
    最近更新 更多