根据 this document,我正在尝试用我的 Nexus 5 模拟 NFC 标签,但我的服务永远不会被调用。 我应该关闭 Android Beam 吗?
我想模拟一个包含 url 的简单标签。
读取器是 Nexus 7 (2012),我发现这个过程就像在 Nexus 7 上使用 Android beam 简单扫描 NFC 标签。
此外,我对 aid-filter 名称有点困惑。有他们的名单吗?
我确定我不明白什么。 谢谢
最佳答案
首先(尽管这不能直接回答您的问题),在两个 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 上免费获得。 .
总结本规范的要求:
- 您需要为 NFC Forum Type 4 标签应用程序 AID 注册您的服务:
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 Reader 模式 API(Android 4.4 中的新功能)。但是,在这种情况下,您需要在接收设备上安装一个在前台处于 Activity 状态的应用程序(这是启用阅读器模式 API 的唯一方法)。
关于android - 使用 Nexus 5 在 Android(4.4/KitKat 及更高版本)上模拟主机卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23155719/