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

问题描述 投票:1回答:1

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

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

我无法让我的用例工作。这是我想要做的:

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

我希望在Android中使用NFC是可行的。我的搜索引导我在检测到NFC时启动应用程序,但这不是我想要的。

android authentication nfc foreground hce
1个回答
4
投票

如果你想在两个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论坛类型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模拟智能卡应用程序与已在读取设备上的前台运行的活动结合使用。
© www.soinside.com 2019 - 2024. All rights reserved.