Android LocationClient.getLastLocation() 返回带有新时间戳的旧的和不准确的位置

标签 android location android-location

自融合位置提供程序发布以来,我一直在使用它,我对它非常满意(比旧系统好得多)。但是当结合使用地理围栏和 LocationClient.lastKnownLocation() 时,我遇到了一个特殊问题。设置如下:

我在一些家庭位置周围放置了几个地理围栏(范围越来越大)。当我得到越过栅栏的 Intent 时,我从 LocationClient 检索最后一个已知位置并使用它。除此之外,我还使用更新模式 PRIORITY_BALANCED_POWER_ACCURACY 注册了定期位置更新。

大多数时候这工作得很好,但有时会发生这种情况:

时间 000 秒 - (Lat,Lon,Accuracy) = (48.127316,11.5855167,683.0)

时间 120 秒 - (Lat,Lon,Accuracy) = (48.1260497,11.5731745,31.823)

时间 300 秒 - (Lat,Lon,Accuracy) = (48.1217455,11.5641666,143.81)

时间 420 秒 - (Lat,Lon,Accuracy) = (48.1189942,11.559061,36.0)

时间 600s - (Lat,Lon,Accuracy) = (48.127316,11.5855167,683.0)

请注意,所有这些位置都是由 getLastKnownLocation() 检索的.这里看起来可疑的是第一个和最后一个位置是相同的(甚至在其他属性中),更具体地说:

* 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 的链接问题中有概述),那么如果手机看到更近的信号塔,为什么它会连接到“远处”的信号塔?

为什么会这样?

最佳答案

第一个和最后一个点是使用单元格三角测量获得的。错误/准确性是基于单元的定位的典型特征,看起来 Google 节能逻辑决定切换到单元就可以了,即使你说它最近的历史记录包括更接近的点。

关于Android LocationClient.getLastLocation() 返回带有新时间戳的旧的和不准确的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17603527/

相关文章:

android - 在android map 上的两个指定之间查找路线?

Android:从AsyncTask请求位置权限

android - android中的监听器与处理程序

android - 如何根据来自api的位置在android中的谷歌地图上移动标记

android - 如何允许 EditText 扩展推开对等控件

android - LocationManager 和 Looper - 每个线程只能创建一个 Looper

android - 我想在谷歌地图中打开我当前的位置

android - 调用 getLastKnownLocation 时出现 SecurityException