【问题标题】:NDEF Message with HCE Android带有 HCE Android 的 NDEF 消息
【发布时间】:2015-03-18 13:03:14
【问题描述】:

我想用 Android 的 HCE 功能模拟主机卡。为此,我扩展了服务类 HostApduService 并覆盖了以下方法:

 public byte[] processCommandApdu(byte[] commandApdu, Bundle extras) {
    if (Arrays.equals(SELECT_APDU, commandApdu)) {
        NdefMessage message = new NdefMessage(new NdefRecord  [] {NdefRecord.createTextRecord("en", "test"});
       return message.toByteArray();
    } else {
        return UNKNOWN_CMD_SW;
    }
}

使用第二台设备可以从 HCE 服务接收数据。问题是我总是收到“Type A”标签,但我需要一个 NDEF 消息。

谁能帮帮我?

【问题讨论】:

标签: android nfc ndef hce


【解决方案1】:

对于任何坚持这个问题的人,我已经阅读了@Michael Roland 提出的NFCForum-TS-Type-4-Tag。整个想法是正确的。您只需模拟进程 SEND 和 RECEIVED 命令以将字节数组转换为NDEF 消息。我创建了两个存储库,一个总结了关于将字符串转换为NDEF message 的整个包,另一个是iOS Reader NDEF TAG 以验证Android HCE 是否正确。

祝你好运!

【讨论】:

    【解决方案2】:

    使用 Android HCE 模拟被检测为 NDEF 标记的标记并不像发送 NDEF 消息以响应 SELECT APDU 那样简单。您需要实现 NFC Forum Type 4 标签操作规范。您可以从NFC Forum website 获取该规范。

    基本上,您需要为 AID D2760000850101 注册一个 HCE 服务,该服务实现读取器端用于访问 4 类标签的几个 APDU 命令:

    • 选择 NDEF 标记应用程序

      00 A4 04 00 07 D2760000850101 [00]
      
    • 选择能力容器

      00 A4 00 0C 02 E103
      
    • 选择 NDEF 数据文件

      00 A4 00 0C 02 xxyy
      

      其中xxyy 是能力容器中指定的 NDEF 数据文件的文件 ID。

    • READ BINARY(用于从能力容器或 NDEF 数据文件中读取数据,以当前选择的为准)

      00 B0 xx yy zz
      

      其中xx yy 是要读取的偏移量,zz 是要读取的字节数。

    重要提示:请注意,Android 设备模拟的此类 NFC Forum Type 4 标签不能用于自动触发第二个 Android 设备上的应用程序(至少不可靠?)。将两个 Android 设备放在一起通常会导致它们建立点对点链接(即使 Beam 已关闭!)。只有第二台 Android 设备上的前台应用程序才能使用 NFC 读取器模式 API 绕过 Android Beam 并可靠地检测到模拟标签。

    【讨论】:

    • 感谢您的回复,但我无法关注您。你知道任何示例代码吗?
    • 不,我手头没有任何示例代码(至少在 HCE 方面没有)。我建议您通过搜索“ISO 7816-4”和“APDU”并阅读 NFC 论坛 Type 4 标签操作规范来开始您的研究。
    • 您能否解释一下为什么它不能用于“可靠地”触发应用程序或在第二台设备上打开 url?
    • @electronix384128 这里的问题是 R/W 模式和 P2P 模式同时运行(依次轮询不同的 P2P 和 R/W 技术)。因此,其他设备可以要么在卡仿真模式下激活(查看 NDEF 标签应用程序)在 P2P 模式下激活(查看 SNEP 服务等)。我想这个问题也是谷歌现在放弃 P2P 模式的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多