【发布时间】: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 定位通常远远落后于“实时”并且计算出的位置实际上是过去的位置(落后几秒)?
备注:
- 我知道在使用 GPS 数据时速度计算并不精确且相当复杂
- 这不是 Matching Location.getTime() milliseconds to NMEA sentences 的副本
【问题讨论】:
-
你得出结论了吗?
-
对我来说,
Location.getTime()似乎是一个非常准确的时间,但没有毫秒。所以有人可以通过使用这个值来设置设备的时间。System.currentTimeMillis()接缝更准确,但这不是真的。如果你错误地设置了设备的时钟,你会从这个调用中得到错误的值。就我而言,我对空间中的确切时间不感兴趣,但对调用之间的增量时间不感兴趣,所以我使用System.currentTimeMillis()。
标签: android gps geolocation