使用模拟器修复位置的时间已关闭

时间:2011-11-28 00:10:30

标签: android android-emulator gps ddms

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

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

我遇到的问题是,使用getTime从位置获取的时间总是偏离当前时间(curTime),即使我使用DDMS设置位置和我在其中查看时间之间的时间也是如此调试器只需几秒钟。通常差异是几个小时,有时从位置开始的时间比当前时间提前几个小时(所以定位时间会在未来几个小时发生?!?)。另外,时间差异不一致。调用Location :: getTime和System.currentTimeMillies的文档都表示返回的时间是自1970年1月1日UTC以来的毫秒数,所以它不应该是使用不同时区的问题。这是模拟器的已知错误还是我做错了什么?谢谢!

2 个答案:

答案 0 :(得分:0)

GPS时间实际上与设备上的时间不同。所以,他们可能会有很大差异。 Wiki有一个很好的解释here

答案 1 :(得分:0)

有关此内容的更多信息,请访问Android emulator's GPS location gives wrong time以及错误报告链接。此外,Android problem finding out how recent latest GPS fix is可能值得一读,以及为什么系统时间和GPS时间不匹配。