基于主机的卡仿真,请给我任何指导?

时间:2014-06-07 17:31:38

标签: android nfc cyanogenmod hce contactless-smartcard

我是这个领域的新手,我得到了一个N​​exus S(CyanogenMod11 = Android Kitkat 4.4.2) 我需要使用HCE(基于主机的卡仿真)模式来模拟非接触式卡。

为了实现这一目标,我需要遵循哪些步骤和提示的指导? ( - 我是否需要对模拟的安全元素进行编程?将其放在云上?)

P.S:我也必须使用新的阅读器模式,因为我的应用程序将由另一个支持Android NfC的手机而不是NFC阅读器阅读。

谢谢。

1 个答案:

答案 0 :(得分:2)

在CyanogenMod 11之前,CyanogenMod支持其自己的基于主机的卡仿真功能。您可以为android.nfc.tech.IsoPcdA技术注册foreground dispatch,然后可以使用IsoPcdA.transceive()方法模拟智能卡。请参阅Nikolay Elenkov关于如何使用此API的blog post

然而,浏览CyanogenMod 11 source (specifically tht of the NFC service)似乎已在第11版中删除了此功能,转而使用Android 4.4的官方HCE API。

官方Android 4.4 HCE API允许应用程序在Android服务中模拟非接触式智能卡(ISO 14443-4 + ISO 7816-4 APDU)。该服务将处理应用程序的所有传入命令APDU并生成适当的响应APDU。有关如何注册此类HCE服务的详细信息,请参阅official API user guide;有关如何处理HCE服务中的传入命令APDU,请参阅this answer

不幸的是,在使用libnfc-nxp作为低级NFC堆栈的设备上,此API不可用(请参阅CyanogenMod 11源代码中的routeAid()enableRoutingToHost()的空实现)。 / p>

总而言之,似乎目前可以在带有CM 11 的Nexus S上进行基于主机的卡仿真。