9

我发现 Android 设备支持三种 NFC 模式:reader/writerP2Pcard emulation

我的应用程序是否可以检查当前启用了哪种模式?

4

1 回答 1

2

不,您的应用无法真正检查当前启用的模式。关键是,默认情况下,Android 设备会定期检查所有三种模式(实际上它比这更复杂一点:这三种模式本身被分成几个部分,每个部分轮询某种技术)。因此,当屏幕打开时,您可以期望 Android 设备在侦听其他阅读器和轮询不同类型的标签技术和点对点模式设备之间循环切换。无论您是否注册了通过点对点模式发送消息,应用程序是否注册了 HCE,或者您的应用程序是否注册了 NFC 发现意图,情况都是如此。即使您在设置中禁用 Android Beam,设备仍将继续轮询点对点模式。

仅当您使用读取器模式 API(在 Android 4.4+ 上可用)明确禁用卡模拟和 P2P 时,您的应用才能控制只有读取器/写入器模式处于活动状态(它甚至可以控制应该轮询哪些标签技术)。

所以你的应用可以知道它自己启用了哪些模式并且可以做一些猜测,例如

  • 如果屏幕打开并且没有使用阅读器模式 API 明确强制阅读器/写入器模式,则所有三种模式都可能处于活动状态。
  • 如果屏幕关闭,则只有卡模拟模式可能处于活动状态(尽管这取决于设备并且 HCE 通常不可用)。
于 2015-04-28T07:12:07.937 回答