Android onLocationchanged没有给出正确的时间

时间:2014-04-24 11:34:14

标签: android google-play-services locationmanager ntp

我正在使用Google Play服务来获取设备的当前位置。只要有新位置,就会调用我的onLocationChanged()。

我从onLocationChanged()中的Location对象获取纬度和经度。这些值是正确的。但是我得到的时间不正确。它给了我系统时间,我故意改变了。

那么有什么办法让我得到正确的时间。如果用户因任何原因更改了设备时间,我想要一种方法来获得正确的时间。

我也检查了NITZ / NTP线程,但它没有帮助。如果我使用SNTPClient,它会给我一个正确的时间,但它会产生互联网连接的依赖性。

我试过从GPS和网络提供商那里获取位置。在这两种情况下,位置都是正确的,但是从系统中挑选时间。我在手机上取消选中“自动时间同步”。

2 个答案:

答案 0 :(得分:0)

尝试Location.getTime()。 它将返回此修复的UTC时间,自1970年1月1日起以毫秒为单位。

请注意,设备上的UTC时间不是单调的:它可以无法预测地向前或向后跳跃。所以在计算时间增量时总是使用getElapsedRealtimeNanos。 另一方面,getTime对于向用户呈现人类可读时间或在重新启动或跨设备仔细比较位置修复时非常有用。 由LocationManager生成的所有位置都保证具有有效的UTC时间,但请记住,自生成位置以来系统时间可能已更改。

答案 1 :(得分:0)

location.getTime()为您提供时间,此最后更新值纬度/经度远离1.1.1970毫秒。

14584084左右