自融合位置提供程序发布以来,我一直在使用它,我对它非常满意(比旧系统好得多)。但是当我将地理围栏与 LocationClient.lastKnownLocation() 结合使用时,我遇到了一个特殊的问题。设置如下:
我在一些家庭位置周围放置了几个地理围栏(范围不断增加)。当我意识到跨越栅栏的意图时,我从 LocationClient 检索最后一个已知位置并使用它。除此之外,我还注册了更新模式 PRIORITY_BALANCED_POWER_ACCURACY 的定期位置更新。
大多数时候这工作得很好,但有时会发生这种情况:
时间 000 秒 -(纬度、经度、精度)= (48.127316,11.5855167,683.0)
时间 120 秒 - (纬度、经度、精度) = (48.1260497,11.5731745,31.823)
时间 300 秒 - (纬度、经度、精度) = (48.1217455,11.5641666,143.81)
时间 420 秒 -(纬度、经度、精度)= (48.1189942,11.559061,36.0)
时间 600s - (纬度,经度,精度) = (48.127316,11.5855167,683.0)
请注意,所有这些位置都是通过以下方式检索的获取最后的已知位置()。这里看起来可疑的是,更具体地说,第一个和最后一个位置是相同的(即使在其他属性中也是如此):
* intent at time 0: *
component: ComponentInfo{package.Class}
key [location]: Location[mProvider=fused,mTime=1373524391934,mLatitude=48.127316,mLongitude=11.5855167,mHasAltitude=false,mAltitude=0.0,mHasSpeed=false,mSpeed=0.0,mHasBearing=false,mBearing=0.0,mHasAccuracy=true,mAccuracy=683.0,mExtras=Bundle[mParcelledData.dataSize=352]]
* intent at time 600: *
component: ComponentInfo{package.Class}
key [location]: Location[mProvider=fused,mTime=1373524994871,mLatitude=48.127316,mLongitude=11.5855167,mHasAltitude=false,mAltitude=0.0,mHasSpeed=false,mSpeed=0.0,mHasBearing=false,mBearing=0.0,mHasAccuracy=true,mAccuracy=683.0,mExtras=Bundle[mParcelledData.dataSize=352]]
* note the ~600 s difference in the timestamp *
我不明白这是怎么发生的,因为中间有一些位置更新且更准确。另外,旧位置上的新时间戳让我很好奇......使用时显然发生了类似的事情old API,但是这个新的位置提供者只是被称为fused
,所以我无法区分 GPS 和WPS来自传感器...如果是手机信号塔切换问题(在有关旧 API 的链接问题中概述),那么如果手机已经看到更近的信号塔,为什么会连接到“远处”的信号塔?
为什么会发生这种情况?