gpt4 book ai didi

android - enableReaderMode 和 enableForegroundDispatch 有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:58:59 27 4
gpt4 key购买 nike

我发现了两种让 Android 应用程序检测和处理 NFC 标签的方法:

  1. NfcAdapter.enableReaderMode(activity, callback, flags, extras) 然后在回调中接收标签信息。

  2. NfcAdapter.enableForegroundDispatch(activity, intent, filters, techLists) 然后在 onNewIntent(intent) Activity 方法中接收标签信息。

我目前使用第二种方法,但是,我最近发现了 enableReaderMode 方法,想知道用它来处理 NFC 标签是否更好。

那么enableReaderModeenableForegroundDispatch有什么区别呢?

最佳答案

前台调度系统

前台调度系统(NfcAdapter.enableForegroundDispatch())自 Android 2.3.3(基本上是 Android NFC 的开始)就存在了。因此,所有具有 NFC 功能的 Android 设备都支持此方法。

前台调度系统用于为当前处于前台的 Activity 提供处理 NFC 发现事件(即发现的 NFC 标签和从对等设备接收的 NDEF 消息)的优先级。这意味着即使为特定标签类型或 NDEF 数据注册了另一个应用程序(通过 AndroidManifest.xml 中的 Intent 过滤器),NFC 事件仍将传递给前台 Activity 其他 Activity 。因此,该方法不会改变 Android 监听 NFC 设备(NFC 标签、P2P 设备)的方式,它只会改变处理已发现设备的优先级。

阅读器模式API

阅读器模式 API (NfcAdapter.enableReaderMode()) 是在 Android 4.4 中引入的。因此,并非所有具有 NFC 功能的 Android 设备都支持此方法。

与前台调度系统相反,阅读器模式 API 确实改变了 Android 监听 NFC 设备的方式。阅读器模式 API 禁用点对点模式。例如,这允许您发现同时启用对等模式和卡模拟模式的其他设备的卡模拟模式(Android HCE 就是这种情况)。 (通常,此类设备会被发现为点对点设备,Android 应用程序将无法访问卡模拟功能。)

此外,您可以更改 NFC 阅读器模式的特定参数,例如你可以:

  • 定义 NFC 阅读器轮询的标签技术,
  • 定义 Android 通过向标签发送特定命令序列并检查是否仍收到响应来测试标签是否仍然存在的时间间隔,
  • 阻止 Android 自动向标签发送命令以测试标签是否包含 NDEF 消息,
  • 阻止 Android 在发现标签时播放声音。

注意:Android 10 上的行为可能有所不同

根据 Adam Johns 的评论,上述情况在 Android 10 上可能不再适用(他在 Pixel 2 上测试过)。当仅使用 enableReaderMode()(没有额外的 enableForegroundDispatch())时,设备似乎会提示“此 NFC 标签没有支持的应用程序”,尽管标签已正确发送到已注册的阅读器模式回调方法 (onTagDiscovered())。

关于android - enableReaderMode 和 enableForegroundDispatch 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33633736/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com