使用其他 Android 设备作为 NFC 标签?

bon*_*ond 1 authentication android foreground nfc hce

我正在开发一个将部署在支持 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 时启动应用程序的示例,但这不是我所追求的。

Mic*_*and 5

如果您想使用一个作为模拟标签,另一个作为读取器/写入器在两台Android设备之间进行通信(而不是使用基于 NFC 对等模式的 Android Beam 在两台设备之间传输 NDEF 消息),您可以将Android HCE(一个设备)与读取器/写入器模式(在另一台设备上)结合使用。

但是,构建这样的解决方案有一些限制。关于仿真端,您有以下限制和要求:

  • Android HCE 要求模拟设备运行 Android 4.4 或更高版本。
  • 仿真设备需要支持基于主机的卡仿真。并非所有具有 NFC 的 Android 4.4+ 设备也支持 HCE。例如,所有(大多数?)包含恩智浦 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 模拟智能卡应用程序与已在阅读设备前台运行的活动结合使用。