我是这个领域的新手,我得到了一个Nexus S(CyanogenMod11 = Android Kitkat 4.4.2) 我需要使用HCE(基于主机的卡仿真)模式来模拟非接触式卡。
为了实现这一目标,我需要遵循哪些步骤和提示的指导? ( - 我是否需要对模拟的安全元素进行编程?将其放在云上?)
P.S:我也必须使用新的阅读器模式,因为我的应用程序将由另一个支持Android NfC的手机而不是NFC阅读器阅读。
谢谢。
答案 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上进行基于主机的卡仿真。