【问题标题】:Host card emulation on Android (4.4 / KitKat and above) with Nexus 5使用 Nexus 5 在 Android(4.4 / KitKat 及更高版本)上模拟主机卡
【发布时间】:2014-06-03 01:22:55
【问题描述】:

我正在尝试根据this document 用我的 Nexus 5 模拟 NFC 标签,但我的服务永远不会被调用。 我应该关闭 Android Beam 吗?

我想模拟一个包含 url 的简单标签。

阅读器是 Nexus 7 (2012),我已经弄清楚了这个过程,就像在 Nexus 7 上使用 Android Beam 简单扫描 NFC 标签一样。

此外,我对辅助过滤器名称有点困惑。有他们的名单吗?

我确定我不明白一些事情。 谢谢

【问题讨论】:

  • 我们需要更多信息来判断这里可能出现的问题。你在模拟什么应用程序(即你为什么 AID 注册了你的服务)?您对模拟卡有什么期望(即它应该作为包含 NDEF 消息的 NFC 论坛标签响应还是应该模拟一些自定义应用程序)?您如何尝试在 Nexus 7 上阅读(即您是否开发了一个特殊的应用程序,或者您希望它自动获取 URL 以在网络浏览器中启动它)?
  • 你明白了。我正在使用我在 android 示例中找到的帮助。我不知道应该使用什么正确的 AID。我对 AID 感到困惑。如果我理解这个问题,是的,我想要一个带有 NDEF 消息的 NFC 论坛标签,我希望我的 Nexus5 扫描 Nexus7 会自动获取 URL 并启动浏览器。

标签: android nfc apdu hce android-beam


【解决方案1】:

首先(尽管这不能直接回答您的问题),在两台 Android NFC 设备之间传输 URL 的首选方式是使用 Android Beam(点对点模式)。 Android HCE(主机卡模拟)通常用于模拟非接触式智能卡应用程序NFC 标签。

我是否需要关闭 Android Beam 才能使用 Android HCE?

不,Android HCE 不受 Android Beam 的开/关设置的影响。实际上,即使关闭 Beam,Android NFC 设备仍会执行点对点模式链接激活。

我想模拟一个包含 URL 的简单标记。

Android HCE 模拟基于 ISO/IEC 14443-4 和 ISO/IEC 7816-4 的智能卡应用程序。因此,如果您想用它来模拟 NFC 标签,则需要在您的 Android HCE 服务中实现 NFC 论坛的 Type 4 标签操作规范。 NFC 论坛的规范可在其website 上免费获取。

总结本规范的要求:

  1. 您需要为 NFC Forum Type 4 标签应用程序 AID 注册您的服务:D2760000850101
  2. 您的服务需要以状态码成功 (0x9000) 响应该 AID 的 SELECT(按 DF 名称)APDU:

    > 00 A4 04 00 07 D2760000850101 00
    < 9000
    
  3. 您的服务需要以状态码成功响应能力容器 (CC) 文件 (E103) 的 SELECT(按 EF ID)APDU:

    > 00 A4 00 0C 02 E103
    < 9000
    
  4. 您的服务需要在收到 READ BINARY APDU(在选择 CC 文件之后)时使用 CC(或其中的一部分)做出响应:

    > 00 B0 Offset_High Offset_Low Length
    < <Length bytes of the CC starting at Offset> 9000
    
  5. 您的服务需要使用状态码成功响应 NDEF 文件(CC 中定义的 EF ID)的 SELECT(按 EF ID)APDU:

    > 00 A4 00 0C 02 <EF ID>
    < 9000
    
  6. 您的服务需要在收到 READ BINARY APDU 时(在选择 NDEF 文件之后)以 NDEF 文件内容(或其中的一部分)进行响应:

    > 00 B0 Offset_High Offset_Low Length
    < <Length bytes of the NDEF file starting at Offset> 9000
    

我想要第二台 Android 设备自动获取 URL。

这是有问题的部分,也是 Beam 成为首选方式的原因。即使您使用一台 Android 设备模拟 NFC Forum Type 4 标签,将两台 Android 设备放在一起仍会导致它们建立点对点链接(即使 Beam 已关闭!)。因此,第二台 Android 设备不会将您的 HCE 模拟卡检测为 NFC 标签。克服此限制的唯一方法是在第二台设备上使用 NFC 读取器模式 API(Android 4.4 中的新功能)。但是,在这种情况下,您需要在接收设备上安装一个在前台处于活动状态的应用(这是启用阅读器模式 API 的唯一方法)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    相关资源
    最近更新 更多