基于主机的卡模拟 - 在 reader 设备上读取 HCE 时触发 reader 应用程序

Host-based Card Emulation - Trigger a reader app when HCE is read on reader device

NFC 标签可以触发 phone 上可用的 NFC reader 应用程序,但 HCE 不会触发任何 reader 应用程序。但是,如果我首先打开 reader 应用程序,那么它会正常工作,因此可以读取 HCE 模拟标签。

我需要一个 HCE 可以打开或提示选择 reader 应用程序的解决方案。

HCE 可以吗?为什么 Android 检测到 HCE 设备时不提示打开 NFC reader 应用程序?

首先,您必须确保使用 android 的 Kitkat 版本以获得 HCE 支持。接下来,由于 HCE 将您的应用程序 ID 路由到 CPU 而不是 eSE 或 UICC Sim 卡,任何依赖于 eSE 或 UICC SIM 卡的应用程序都不能与 HCE 一起使用。因此,您必须使用 HCE 支持的应用才能被 reader 识别。接下来,reader 应发送应用程序 ID,以便 phone 上安装的任何 HCE 应用程序都能够响应它。

不,一台 Android 设备上的 HCE 应用不能用于触发(启动)另一台 Android 设备上的 reader 应用。原因是 Android 设备也实现了点对点模式。因此,默认情况下,两个 Android 设备将自动以点对点模式进行通信,并且 reader 端不会看到 HCE 模拟标签。

仅当 reader 应用程序在 reader 端启动并使用 reader-mode API 禁用点对点模式时,这两个设备以 reader/writer 模式 + 卡仿真模式开始通信。因此,只有这样 HCE 模拟标签才对 reader 端可见。

请注意,从设置菜单中禁用 Beam 不会对此有任何改变,因为即使 Beam(目前 Android 设备使用的唯一应用协议,对等模式仍保持启用状态-对等模式)被禁用。