当我在手机上使用 LocationManager 时,对于几乎所有 Nexus 5 测试设备,LocationManager 每分钟检测几次相同的位置(我每 60 秒侦听一次位置)。要清楚我实际使用的代码:
mLocationManager.requestLocationUpdates(60*1000,
0,
criteria),
mLocationUpdateListener, Looper.getMainLooper());
标准是从服务器设置的,仅定义所需的精度(Criteria.ACCURACY_COARSE或Criteria.ACCURACY_FINE)。
因此,对于我的其他测试设备(Nexus 4 和三星 S3),位置管理器没有问题。它总是每 60 秒提供一个新位置。但是 Nexus 5 设备似乎在某个时间点缓存了该位置,因此我向服务器发送了 5 次完全相同的位置,即使我已经离该位置只有 100 米。
有人知道可能是什么问题吗?如果您有兴趣,我还可以附加 mLocationUpdateListener 的代码,但它只是将位置发送到服务器。
编辑:位置总是在后台服务中获得。我可以通过在前台打开谷歌地图来解决这个问题。但这当然不能解决我的问题。
编辑解决方案:Play Services 似乎无法在所有 6 台 Nexus 5 测试设备上运行。重新启动所有设备后,我再也无法重现那种奇怪的行为了......
编辑2:我再次偶然发现了这种行为,即使我重新启动手机它仍然会出现......