根据本文档,我正在尝试用我的 Nexus 5 模拟 NFC 标签,但我的服务永远不会被调用。我应该关闭 Android 光束吗?
我想模拟一个包含 url 的简单标签。
阅读器是 Nexus 7 (2012),我已经弄清楚了这个过程,就像在 Nexus 7 上使用 Android 光束对 NFC 标签进行简单扫描一样。
此外,我对辅助过滤器名称有点困惑。有他们的名单吗?
我确定我不明白一些事情。谢谢
首先(虽然这不能直接回答您的问题),在两个 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 论坛的规范可在其网站上免费获取。
总结本规范的要求:
D2760000850101
。您的服务需要以状态码成功 ( 0x9000
) 响应该 AID 的 SELECT(按 DF 名称)APDU:
> 00 A4 04 00 07 D2760000850101 00
< 9000
您的服务需要以状态码成功响应能力容器 (CC) 文件 ( E103
) 的 SELECT(按 EF ID)APDU:
> 00 A4 00 0C 02 E103
< 9000
您的服务需要在收到 READ BINARY APDU 后(在选择 CC 文件之后)使用 CC(或其中的一部分)进行响应:
> 00 B0 Offset_High Offset_Low Length
< <Length bytes of the CC starting at Offset> 9000
您的服务需要使用状态码成功响应 NDEF 文件(CC 中定义的 EF ID)的 SELECT(按 EF ID)APDU:
> 00 A4 00 0C 02 <EF ID>
< 9000
您的服务需要在接收到 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 的唯一方法)。