gpt4 book ai didi

android - 在 Android 10 上进行后台扫描时的限制?

转载 作者:行者123 更新时间:2023-12-02 11:16:57 28 4
gpt4 key购买 nike

Android 上的蓝牙扫描似乎有很多“隐藏功能”。
对于初学者来说,有一个“30 秒限制”(Android 7.0 ble scan no result)。然后你必须在后台模式下设置一个 ScanFilter 否则你不会得到任何结果(找不到这个的引用)。

最近我发现,当我在 Android 10 上使用以下扫描模式启用扫描并关闭屏幕(大约 30 秒后)时,我没有得到任何扫描结果(我在 Google Pixel 3 和 Google Pixel 4 上观察到了这种行为,它在较旧的 Android 上运行良好):

/**
* Perform Bluetooth LE scan in balanced power mode. Scan results are returned at a rate that
* provides a good trade-off between scan frequency and power consumption.
*/
public static final int SCAN_MODE_BALANCED = 1;

还有另一种扫描模式(我还没有尝试过):
/**
* Perform Bluetooth LE scan in low power mode. This is the default scan mode as it consumes the
* least power. This mode is enforced if the scanning application is not in foreground.
*/
public static final int SCAN_MODE_LOW_POWER = 0;

问题:我是否应该将此注释“强制执行”解释为使用 SCAN_MODE_LOW_POWER 以外的其他内容进行扫描?不会给我扫描结果吗?有人可以证实这一点吗?

我会自己进一步调查,但这需要时间......

备注 :我有一个前台服务,我可以在 ADB 日志中看到扫描仪定期启用/禁用。但是我没有得到任何扫描结果...

更新:我现在确定使用 SCAN_MODE_LOW_POWER在后台模式下,但我仍然没有得到任何结果。我不知道是怎么回事。

更新 2:我尝试运行旧版本的应用程序(未针对 Android 10 编译)并且效果很好

更新 3:为了以防万一,我禁用了应用程序的电池优化。这没有帮助:
  • 转到设置 > 应用程序 > 您的应用程序 > 高级 > 电池 > 电池优化
  • 将 View 更改为所有应用程序
  • 搜索您的应用程序
  • 选择未优化
  • 最佳答案

    Android 10 需要新权限才能让 BLE 扫描返回结果。不幸的是,扫描不会返回结果,而是记录警告。新权限为 ACCESS_FINE_LOCATION而不是 ACCESS_COARSE_LOCATION sdk 版本 23 到 28 需要,如果您需要在应用程序处于后台时执行 BLE 扫描(即使您有前台服务),您将需要 ACCESS_BACKGROUND_LOCATION .您必须在 list 中列出这些权限,并在运行时提示用户授予它们。这里有一个类似的问题,答案中有更多信息:Android 10 not working with BLE Bluetooth scanning

    关于android - 在 Android 10 上进行后台扫描时的限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59180364/

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