【发布时间】:2016-05-07 19:36:51
【问题描述】:
我的应用使用 Google Play 服务 API 来获取用户位置并检查设备是在半径为 50 米的特定区域内还是在外。 该应用程序使用 PRIORITY_HIGH_ACCURACY 和 1 分钟的间隔。 所以我创建了 GoogleApiClient:
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
mGoogleApiClient.connect();
在 onConnected 回调中:
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(60000);
mLocationRequest.setFastestInterval(10000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
和
MyLocationListener.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, mLocationListener);
我的应用还根据精度(如果精度 > 200 米我丢弃它)和时间(如果它太旧我丢弃它)过滤位置。
该应用程序运行良好,除了在某些特定区域,有时它返回错误的位置更新距真实位置约 500 米,而这些错误的位置总是在同一个地方附近,离手机信号塔只有几步之遥。
在这些区域中,我得到了错误和正确位置的组合,我的应用认为设备有时在感兴趣区域内,有时在感兴趣区域外。
当我收到位置更新时,我会连续等待其他 3 个确认位置。如果与前一个完全相同,我也会过滤位置。这意味着当我收到这些错误时,我会连续收到 4 个错误的位置,每个位置都与其他位置略有不同。
有没有办法防止这种行为?这可能是手机信号塔造成的吗?
【问题讨论】:
标签: android fusedlocationproviderapi android-fusedlocation