【问题标题】:Location.getTime() always returns timestamp without millisecondsLocation.getTime() 总是返回没有毫秒的时间戳
【发布时间】:2014-07-20 10:51:12
【问题描述】:

我正在使用LocationManager.GPS_PROVIDER 使用LocationManager.requestLocationUpdates() 跟踪GPS 位置并注册LocationListener

我的问题:

所有经过测试的设备(Sony neo、Sony active、Moto G)都会生成 Location 对象,它们的 getTime() 中没有几分之一秒:

<trkpt ...><time>2014-05-24T10:24:59.000Z</time></trkpt>
<trkpt ...><time>2014-05-24T10:25:00.000Z</time></trkpt>
<trkpt ...><time>2014-05-24T10:25:01.000Z</time></trkpt>
<trkpt ...><time>2014-05-24T10:25:02.000Z</time></trkpt>
<trkpt ...><time>2014-05-24T10:25:03.000Z</time></trkpt>

当我计算速度、倾斜和与气压高度合并时,1 秒(1000 毫秒)的分辨率太不精确了。而且我不相信,所有修复都完全.000

我的问题:

最好将System.currentTimeMillis() 作为我的跟踪点的时间戳,还是 GPS 定位通常远​​远落后于“实时”并且计算出的位置实际上是过去的位置(落后几秒)?

备注:

【问题讨论】:

  • 你得出结论了吗?
  • 对我来说,Location.getTime() 似乎是一个非常准确的时间,但没有毫秒。所以有人可以通过使用这个值来设置设备的时间。 System.currentTimeMillis() 接缝更准确,但这不是真的。如果你错误地设置了设备的时钟,你会从这个调用中得到错误的值。就我而言,我对空间中的确切时间不感兴趣,但对调用之间的增量时间不感兴趣,所以我使用System.currentTimeMillis()

标签: android gps geolocation


【解决方案1】:

根据我的经验,System.currentTimeMillis() 是一种更好的获取时间戳的方法,这也是我在我的应用程序中所做的。但是,请注意,正如 android 开发者网站上所述,System.currentTimeMillis() Returns the current time in milliseconds since January 1, 1970 00:00:00.0 UTC 所以这真的取决于你想用它做什么。正如我所提到的,我发现它比其他形式的时间戳更可靠,它可能最适合您的情况。

【讨论】:

  • 谢谢。我将System.currentTimeMillis 用于所有其他传感器(例如气压),Location.getTime() 使用相同的语义(自 1970 UTC 以来的毫秒数)。但大问题是:GPS 数据到达我的听众时是否已经过时?过时多少?几毫秒或几秒钟?
  • 我相信它已经过时了一些工厂,你试过System.nanoTime()吗?我觉得比System.currentTimeMillis更精确,但我还没有在android上试过
猜你喜欢
  • 2022-01-07
  • 2016-04-20
  • 2011-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多