Android 使用emulator进行位置修复的时间已关闭

Android 使用emulator进行位置修复的时间已关闭,android,android-emulator,gps,ddms,Android,Android Emulator,Gps,Ddms,我正在编写一些android代码来测试地理位置库,但android模拟器出现了问题。我正在创建一个LocationListener,当调用LocationListener::onLocationChanged时,我检查传入的Location对象的时间,以将其与当前时间进行比较。我使用DDMS emulator控制窗口更改位置,以触发对onLocationChanged的调用。以下是我在onLocationChanged方法中使用的代码,用于将传入的位置时间与当前时间进行比较(“location”

我正在编写一些android代码来测试地理位置库,但android模拟器出现了问题。我正在创建一个LocationListener,当调用LocationListener::onLocationChanged时,我检查传入的Location对象的时间,以将其与当前时间进行比较。我使用DDMS emulator控制窗口更改位置,以触发对onLocationChanged的调用。以下是我在onLocationChanged方法中使用的代码,用于将传入的位置时间与当前时间进行比较(“location”是传入onLocationChanged的位置):


我遇到的问题是,使用getTime从location获取的时间总是远远超出当前时间(curTime),即使从使用DDMS设置位置到在调试器中查看位置之间的时间仅为秒。通常差异是几个小时,有时来自位置的时间比当前时间提前几个小时(因此位置修复的时间在未来几个小时?!?)。此外,时间差并不一致。调用Location::getTime和System.currentTimeMillies的文档都说,返回的时间是从1970年1月1日UTC起以毫秒为单位给出的,因此使用不同的时区不应该是个问题。这是仿真器的已知错误还是我做错了什么?谢谢

GPS时间实际上与设备上的时间不同。因此,它们之间可能存在巨大差异。Wiki有一个很好的解释

关于这一点的更多信息可以在错误报告链接中找到。此外,可能值得一读,以及为什么系统时间和GPS时间不匹配

float accuracy = location.getAccuracy();
long curTime = System.currentTimeMillis();
float lateness = (curTime - location.getTime()) / 1000;