我试图根据this document使用我的Nexus 5模拟NFC标签,但我的服务永远不会被调用。 我应该关闭Android光束吗?
我想模仿包含网址的简单标记。
读者是Nexus 7(2012),我已经发现这个过程就像在Nexus 7上使用Android光束简单扫描NFC标签一样。
另外,我对辅助过滤器名称有点困惑。有他们的清单吗?
我确定我不懂东西。 感谢
答案 0 :(得分:16)
首先(虽然这不能直接回答您的问题),在两个Android NFC设备之间传输URL的首选方法是使用Android Beam(点对点模式)。 Android HCE(主机卡仿真)通常用于模拟 NFC标签以外的非接触式智能卡应用程序。
我是否需要关闭Android Beam才能使用Android HCE?
不,Android HCE不受Android Beam的开/关设置的影响。实际上,即使Beam关闭,Android NFC设备仍将执行点对点模式链接激活。
我想模拟包含网址的简单标记。
Android HCE模拟基于ISO / IEC 14443-4和ISO / IEC 7816-4的智能卡应用程序。因此,如果您想使用此模拟NFC标签,则需要在Android HCE服务中实施NFC论坛的Type 4标签操作规范。 NFC论坛的规范可在website上免费获取。
总结本规范的要求:
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文件的SELECT(通过EF ID)APDU(CC中定义的EF ID):
> 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设备自动获取网址。
这是有问题的部分以及为什么Beam是首选的方式。即使您使用一台Android设备模拟NFC Forum Type 4标签,将两台Android设备放在一起仍会导致它们建立点对点链接(即使Beam已关闭!)。因此,第二个Android设备不会将您的HCE仿真卡检测为NFC标签。克服此限制的唯一方法是在第二个设备上使用NFC Reader模式API(Android 4.4中的新增功能)。但是,在这种情况下,您需要在接收设备上安装一个在前台处于活动状态的应用程序(这是启用Reader模式API的唯一方法)。