1

我正在开发一个将部署在支持 NFC 的设备上的应用程序。我正在尝试使用 NFC 启用身份验证,以便用户可以扫描其他 NFC 设备(例如手机)进行身份验证。

我浏览了 Android 在http://developer.android.com/guide/topics/connectivity/nfc/nfc.html上的 NFC 文档

我无法让我的用例正常工作。这是我正在尝试做的事情:

  1. 在设备 A 中部署应用程序。
  2. 设备 A 上的应用仅在应用处于前台且处于登录活动时才会尝试扫描 NFC。
  3. 用户可以在设备 A 附近携带设备 B/NFC 标签,登录活动将对用户进行身份验证。

我希望在 Android 中使用 NFC 可以做到这一点。我的搜索将我引向一个示例,该示例在检测到 NFC 时启动应用程序,但这不是我所追求的。

4

1 回答 1

5

如果您想通过使用一个作为模拟标签和另一个作为读取器/写入器来在两台 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 模拟智能卡应用程序与已在读取设备上的前台运行的活动结合使用。
于 2014-08-07T06:15:29.913 回答