9

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

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

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

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

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

4

1 回答 1

18

首先(虽然这不能直接回答您的问题),在两个 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 论坛的规范可在其网站上免费获取。

总结本规范的要求:

  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 的唯一方法)。

于 2014-04-20T08:51:35.643 回答