Android位置在一段时间后停止更新位置



我有一个应用程序,它的主要功能是跟踪用户的训练。在过去的几年里,GPS定位一直运行良好,直到本月,奇怪的问题出现了。

有些人(并非所有人(使用不同的设备和安卓版本,会体验到gps定位的奇怪行为。突然,在至少几分钟(有时是几个小时(后,onLocationChanged停止被启动。有时它工作得很好,然后第二天用户又出现了这个问题。

用户必须开始一项新的训练才能恢复工作。此外,在应用程序日志中,我发现

onConnectionSuspended

在cause=1的情况下调用(cause_SERVICE_DISCONNECTED(。

根据文档,丢失的连接应该会自动重新连接,但不会导致所描述的问题。

为了解决这个问题,我创建了一个内部计时器(可运行(,用于检查上次更新该位置的时间。如果超过,比方说,2分钟,它会像这样重新连接所有东西:

mGoogleApiClient.disconnect();
mGoogleApiClient.connect();
startLocationUpdates(); //calls requestLocationUpdates

它似乎正在发挥作用,至少在我们的一个测试用户设备上是这样。对我来说,这似乎是一个小问题,所以让我问你:你经历过类似的问题吗?你有更好的方法来解决它吗?

顺便说一下,我使用的是:

com.google.android.gms:play-services-location:18.0.0

我唯一能想到的就是在一段时间没有得到位置后重新启动gps接收器/启动振动手机,这样用户就知道并可以重新启动他的手机/尝试注册更多的提供商,而不仅仅是gms。试试融合的、经典的GPS/网络定位监听器。。如果他们所有人都向某个班级发送广播,而该班级等待几秒钟,然后及时优先考虑其中最好的一个,那就太好了!我试过了,它起作用了,但我需要有3米的精度。:D所以对我来说不可能

最新更新