如果您想通过使用一个作为模拟标签和另一个作为读取器/写入器来在两台 Android 设备之间进行通信(而不是使用基于 NFC 点对点模式的 Android Beam 在两台设备之间传输 NDEF 消息),您可以将Android HCE(一台设备)与读写器模式(在另一台设备上)结合使用。
但是,构建这样的解决方案有一些限制。关于仿真端,您有以下限制和要求:
- Android HCE 要求仿真设备运行 Android 4.4 或更高版本。
- 仿真设备需要支持基于主机的卡仿真。并非所有具有 NFC 的 Android 4.4+ 设备也支持 HCE。例如,所有(大多数?)包含 NXP PN544 NFC 控制器的设备目前都不支持 HCE。
- 您只能在 ISO/IEC 14443-4 之上模拟 ISO/IEC 7816-4 应用程序结构。如果您想用 NDEF 数据模拟 NFC 标签,这将等同于 NFC Forum Type 4 标签。但当然,您不仅限于模拟 NDEF 风格的 NFC 标签。
但是,像这样模拟的 NFC 标签(或者更确切地说是智能卡应用程序)也对读取器端施加了一些要求/限制:
- Android 的 HCE 功能与其对等模式功能并行运行(无论设备是否启用了对 Android Beam 的支持)。因此,其他 Android 设备会将 Android HCE 设备检测为点对点设备,并默认以点对点模式与它们通信。因此,其他 Android 设备通常无法访问 Android HCE 模拟的智能卡应用程序。
- 仅从 Android 4.4 开始,您可以使用阅读器模式 API禁用点对点模式发现。因此,您需要在阅读器端安装 Android 4.4+ 才能访问模拟的 NFC 标签。
- 这还可以防止在发现第一台设备时在第二台设备上自动启动应用程序,因此您只能将 Android HCE 模拟智能卡应用程序与已在读取设备上的前台运行的活动结合使用。