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

时间:2014-07-23 16:42:03

标签: android authentication nfc foreground hce

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

我浏览了Android在http://developer.android.com/guide/topics/connectivity/nfc/nfc.html

处的NFC文档

我无法使用我的用例。 这是我想要做的:

  1. 在设备A中部署应用。
  2. 设备A上的
  3. 应用只会在应用处于前台并且处于“登录活动”时尝试扫描NFC。
  4. 用户可以在设备A附近引入设备B / NFC标签,登录活动将对用户进行身份验证。
  5. 我希望在Android中使用NFC是可行的。我的搜索引导我举例说明在检测到NFC时启动应用程序,但这不是我想要的。

1 个答案:

答案 0 :(得分:4)

如果您想在两个 Android 设备之间进行通信,请使用一个作为模拟标记,另一个作为读取器/写入器(而不是使用Android Beam在两个设备之间传输NDEF消息,这是基于在NFC点对点模式下,您可以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论坛类型4标签。但是,当然,您不仅限于模拟NDEF风格的NFC标签。

但是,像这样模拟的NFC标签(或者更确切地说是智能卡应用程序)对读者方面也提出了一些要求/限制:

  • Android的HCE功能与其点对点模式功能并行运行(无论设备是否支持启用Android Beam)。因此,其他Android设备会将Android HCE设备检测为点对点设备,并且默认情况下会以点对点模式与它们进行通信。因此,其他Android设备通常无法访问Android HCE模拟智能卡应用程序。
  • 仅从Android 4.4开始,您可以使用reader mode API禁用点对点模式发现。因此,您需要在阅读器端使用Android 4.4+才能访问模拟的NFC标签。
  • 这还可以防止在发现第一个设备时自动启动第二个设备上的应用程序,因此您只能将Android HCE模拟智能卡应用程序与已在读取设备上运行的活动结合使用。