我们有一个应用程序,可以根据用户操作尝试获取位置修复。它同时在 GPS 和网络上进行侦听,并具有基于时间/准确性的决策矩阵来确定何时停止侦听以及返回什么修复。
我们有时会注意到一种非常奇怪的行为。我们使用经典的方法来查看修复的历史,如下所示:
long age = now - newLocation.getTime();
if(age >= prefs.getLocationMaxAge()){
Log.d(TAG, "location too old.");
return;
}
但有时,根据返回的时间戳,从操作系统返回的 location.getTime 的年龄可能为 15-20 秒,尽管我们可以确定它已经很老了。例如,如果经度/纬度定位来自 30 分钟前手机所在的位置!
它似乎发生在 Wi-Fi 和网络上,但不是 GPS。对我来说,这完全是疯狂的。有没有其他人看到过这个,有什么办法可以解决吗?
我们已经在几款不同的手机上安装了它,最近的一款是三星 Galaxy S II。
非常欢迎帮助。
编辑:要非常清楚,问题是操作系统调用了“onlocationchanged”回调,其时间戳年龄可能为几秒钟,当我确定“新”中的经度/纬度时修复是电话至少 30 分钟未接通的地方。
这使得很难准确地确定手机的位置......