我已经在我的Activity中实现了OnLocationChanged(Location location)作为重写的方法,如下所示:
@Override
public void onLocationChanged(Location location) {
mCurrentLocation = location;
if (wifiSpotList != null) {
presenter.onLocationUpdated(wifiSpotList, mCurrentLocation);
centerInLoc(location);
}
}
问题是,即使设备没有移动,也会触发此方法。它总是以毫秒为间隔。
通过位置参数的调试器获取以下日志:
mTime = 1446035851646
mLongitude = -3.6923793
mLatitude = 40.5008861
mTime = 1446035856976
mLongitude = -3.6923596
mLatitude = 40.5008932
mTime = 1446035867327
mLongitude = -3.6923681
mLatitude = 40.5008987
mTime = 1446035877344
mLongitude = -3.6923778
mLatitude = 40.5008949
mTime = 1446035882442
mLongitude = -3.6923734
mLatitude = 40.5008926
...
编辑:
这是初始化requestLocationUpdates的代码:
protected void startLocationUpdates() {
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
this.locationUpdatesStarted = true;
}
编辑mLocationRequest:
protected void createLocationRequest() {
LocationRequest mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(LOCATION_REQUEST_INTERVAL);
mLocationRequest.setFastestInterval(LOCATION_REQUEST_FASTEST_INTERVAL);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
this.mLocationRequest = mLocationRequest;
}
是因为纵向\横向变化触发了方法?为什么即使设备不移动也触发它?我可以限制精度吗?有什么干净的方法可以实现onLocationChanged()吗?
setSmallestDisplacement(float smallestDisplacementMeters)
您必须设置位置更新之间的最小距离(以米为单位)默认情况下为0。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句