自从
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 这样的其他应用程序是如何解决这个问题的。非常感谢任何帮助。
事实上,他说的是司机应用程序,而不是乘客应用程序场景。做过网约车应用的人可以用他们的经验回答吗?
提前致谢