【问题标题】:Recording GPS location in the background doesn't work when battery optimizations are enabled on Android在 Android 上启用电池优化后,在后台记录 GPS 位置不起作用
【发布时间】:2023-01-20 00:52:58
【问题描述】:

我们开发了一款用于户外活动(远足、骑自行车、山地自行车......)的应用程序,该应用程序的主要功能之一是通过智能手机/平板电脑的 GPS 记录用户的轨迹背景以便将其保存在用户帐户中。

为了做到这一点,我们在录制过程中启动了一个带有唤醒锁和持久通知的前台服务。

此功能经过优化以尽可能少地使用电池。

但是,当在设备上启用电池优化时,轨迹记录在后台无法正常工作,导致轨迹中出现直线,变得无法使用。

我们已经设法检测到电池优化是通过 PowerManager 的 isIgnoringBatteryOptimizations() 方法启用的,并将用户重定向到适当的程序以手动禁用电池优化。

但是,它不是很用户友好。

我们的应用程序使用 Android 标准位置提供程序而不是融合位置提供程序,以便即使在飞行模式下也能使用 GPS。 它不请求 ACCESS_BACKGROUND_LOCATION 权限,因为不推荐,需要 Google 人工审核。

我们有一些问题:

  1. 启用电池优化后,在后台记录轨迹的基于位置的应用程序无法正常工作是否正常?或者在我们的代码/配置中是否还有其他需要考虑/启用的东西?

  2. 如果我们使用,问题发生的频率会降低吗

    • 融合位置提供者
    • 活动识别功能(具有 ACTIVITY_RECOGNITION 权限)
    1. 在我们的用例中,是否真的禁止并禁止 Play 商店中的应用程序向用户显示请求忽略电池优化的弹出窗口(具有 REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 权限)?

    如果被禁止,一些具有相同功能的竞争对手应用程序显示此弹窗并且仍然发布在Play商店中是否正常?

    如果我们在应用程序中启用实时跟踪功能以允许其他人出于安全原因跟踪用户的位置,是否允许显示此弹出窗口(在这种情况下,应用程序可能会因异常“安全应用程序 -保护用户及其家人安全的应用程序。”列于此处:https://developer.android.com/training/monitoring-device-state/doze-standby.html#exemption-cases)

    在此先感谢您的帮助。

    最好的祝福。

【问题讨论】:

    标签: android android-location android-fusedlocation android-doze android-doze-and-standby


    【解决方案1】:

    由于 FusedLocation 提供程序是 Google 提供的推荐位置,因此我不会使用其他任何东西。然后,确保使用符合推荐准则https://developers.google.com/location-context/fused-location-provider 的 FusedLocation。

    另外,请确保在最新的目标 SDK 下对其进行测试,因为最新的具有更多限制。

    然而,我发现电池限制很烦人,缺少一些基本信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-24
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多