2017-03-16 323 views
1

我在docs中看到对象位置有一个方法getTime()是否有可能从GPS获取当前时间

在我的应用程序中,我需要服务器时间,但有时,应用程序可能处于脱机状态,所以我没有选择获取细胞时间。我很乐意使用Location.getTime,但是我不清楚这个时间是从哪里来的?

Cel或GPS卫星电视?

这是获取应用程序离线时的当前小时的可靠数据吗?

回答

0

如果您不需要非常精确的时间,并且只是想知道日期而不考虑精确的时间,这很有用。由于作为文档说:

通过的LocationManager产生的所有位置都保证有 有效UTC时间,但是请记住,系统时间可能已经 改变,因为生成的位置。

另外看看getElapsedRealtimeNanos()它看起来更精确。

+0

是的,但问题是:这次来自哪里 –

+0

你应该阅读这篇文章,非常简单和有用:https://en.m.wikipedia.org/wiki/GPS_disciplined_oscillator – AMS

+0

不要忘记,一些设备具有A-GPS,其可能取决于不同的方式来计算不仅在卫星上的位置,而且还使用WiFi网络和附近的设备。我更喜欢你看看这篇文章:http://stackoverflow.com/questions/7017069/gps-time-in-android – AMS

0

如所讨论的in this questionLocation.getTime()返回任一

  • 设备时间(System.currentTimeMillis())如果Location.getProvider().equals(LocationManager.NETWORK_PROVIDER)

  • 的GPS(卫星)的时间(以毫秒为单位而是以1s精度)如果Location.getProvider().equals(LocationManager.GPS_PROVIDER)

由于GPS定位是基于精确时间的知识,所以我认为它至少与从服务器获得的时间一样可靠。 您可以将当地时区应用于GPS时间戳以获取人类可读的时间,这应该等于正确同步的设备时间(在我的情况下,大多数设备不是,所以使用GPS时间更好)。