我是这个领域的新手,我有一个 Nexus S(CyanogenMod11 = Android Kitkat 4.4.2)而且我需要使用 HCE(基于主机的卡模拟)模式来模拟非接触式卡。
为了完成此操作,我需要遵循的步骤和提示有什么指导吗?( - 我需要对模拟的安全元件进行编程吗?把它放在云端吗?)
PS:我还必须使用新的阅读器模式,因为我的应用程序将被另一部支持 Android NFC 的手机而不是 NFC 阅读器读取。
谢谢你。
我是这个领域的新手,我有一个 Nexus S(CyanogenMod11 = Android Kitkat 4.4.2)而且我需要使用 HCE(基于主机的卡模拟)模式来模拟非接触式卡。
为了完成此操作,我需要遵循的步骤和提示有什么指导吗?( - 我需要对模拟的安全元件进行编程吗?把它放在云端吗?)
PS:我还必须使用新的阅读器模式,因为我的应用程序将被另一部支持 Android NFC 的手机而不是 NFC 阅读器读取。
谢谢你。
在 CyanogenMod 11 之前,CyanogenMod 支持自己的基于主机的卡模拟功能。您可以为该技术注册一个前台调度android.nfc.tech.IsoPcdA
,然后可以使用该IsoPcdA.transceive()
方法模拟智能卡。有关如何使用此 API,请参阅 Nikolay Elenkov 的博客文章。
但是,浏览CyanogenMod 11 源代码(特别是 NFC 服务的源代码),似乎该功能已在版本 11 中被删除,转而支持 Android 4.4 的官方 HCE API。
官方的 Android 4.4 HCE API 允许应用在 Android 服务中模拟非接触式智能卡(ISO 14443-4 + ISO 7816-4 APDU)。该服务将处理应用程序的所有传入命令 APDU 并生成正确的响应 APDU。有关如何注册此类 HCE 服务的更多信息以及如何在 HCE 服务中处理传入命令 APDU的更多信息,请参阅官方 API 用户指南。
不幸的是,此 API 在使用 libnfc-nxp 作为低级 NFC 堆栈的设备上不可用(请参阅CyanogenMod 11 源代码的空实现routeAid()
和中)。enableRoutingToHost()
因此,总而言之,似乎目前无法在带有 CM 11 的 Nexus S 上进行基于主机的卡仿真。