使用Nexus 5在Android(4.4 / KitKat及更高版本)上进行主机卡仿真

时间:2014-04-18 14:01:54

标签: android nfc apdu hce android-beam

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

我想模仿包含网址的简单标记。

读者是Nexus 7(2012),我已经发现这个过程就像在Nexus 7上使用Android光束简单扫描NFC标签一样。

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

我确定我不懂东西。 感谢

1 个答案:

答案 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上免费获取。

总结本规范的要求:

  1. 您需要为NFC论坛类型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文件的SELECT(通过EF ID)APDU(CC中定义的EF ID):

    > 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
    
  7. 我想要第二个Android设备自动获取网址。

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