我正在开发一个Android应用程序,其中我经常需要用户位置更新。每分钟说2次。
早些时候我一直在使用Google Play服务"融合位置服务"但未按要求收到位置更新。 位置更新卡住了一段时间,更新之间的间隔跳到了10分钟左右。有时即使我优先考虑" PRIORITY_HIGH_ACCURACY"同样的事情发生了。
然后我回到旧的"位置经理"当我使用" NETWORK_PROVIDER"时,我注意到位置更新由于此提供程序而停滞不前。 GPS也不会立即激活,需要一些时间。我正在尝试构建我的自定义融合位置提供程序。如何有效地在提供商之间切换,而不会对位置更新造成滞后。
我想知道定期更新位置的最佳做法是什么,无论是NW,GPS还是两者。就像它应该适用于无法提供位置更新卡住的应用程序。
电池消耗对我来说不是问题。我知道Google提供的有关位置访问的所有支持文档。
非常感谢任何帮助。
谢谢!
答案 0 :(得分:1)
FusedLocationProvider确实是目前获取位置的最佳选择,因为它使用的不仅仅是GPS或网络数据来获取位置修复。我也遇到过关于间隔错过的问题,但最终这取决于GPS,网络等的可用性等。
到目前为止,我最喜欢的FusedLocationProvider用法与AlarmManager类一起使用:基本上,我们的想法是按照警报管理器指定的间隔启动位置跟踪(这可以设置为每隔30秒,例如你的情况)。命中间隔后,位置提供程序将尽快获取位置修复(因此在setInterval方法或其调用的任何方法中,参数为0)。这样,您可以避免在新的位置再等待30秒,而是让位置跟踪器在达到警报管理器指定的时间间隔后尽快提供位置。
顺便说一句,在制作自定义位置跟踪包装时,请注意使用.getLastKnownLocation()方法,因为它只使用缓存位置 - 您最终可能每30秒向用户发送一次相同的位置。
祝你好运!