无法通过Android中的前台服务在后台连续接收位置

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

自从

location
类型的前台服务启动以来,我可以获得几分钟的有效位置更新(平均 10 分钟)。在此期间之后,接收到的位置为空值或根本不调用 api 回调。

我正在使用

FusedLocationProviderClient
requestLocationUpdates(..)
api 优先
Priority.PRIORITY_BALANCED_POWER_ACCURACY
以获得连续的位置更新。我已经提供了权限
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_BACKGROUND_LOCATION

并非所有设备都会出现这种情况,但某些设备,尤其是 Vivo、Oppo 等,会出现这种情况。通过禁用省电模式、将我的应用程序列入白名单以忽略电池优化等,接收位置更新的时间延长(平均 20 分钟)。仍然长时间未收到位置更新。

只是为了实验,我尝试在前台服务中并行添加一个额外的计时器,以定期获取单个位置更新(FusedLocationProviderClient#getCurrentLocation),同时具有以下每个优先级:

  • Priority.PRIORITY_PASSIVE
  • Priority.PRIORITY_LOW_POWER
  • Priority.PRIORITY_BALANCED_POWER_ACCURACY
  • Priority.PRIORITY_HIGH_ACCURACY

但是一段时间后,这个 api 的位置更新仍然是空的。

很好奇像 Uber 这样的其他应用程序是如何解决这个问题的。非常感谢任何帮助。

android background location google-play-services android-gps
1个回答
0
投票

事实上,他说的是司机应用程序,而不是乘客应用程序场景。做过网约车应用的人可以用他们的经验回答吗?

提前致谢

© www.soinside.com 2019 - 2024. All rights reserved.