FusedLocationApi.getLastLocation和requestLocationUpdates需要很长时间才能返回

时间:2018-04-01 14:32:20

标签: android geolocation google-play-services fusedlocationproviderapi android-fusedlocation

我今天面对新手机的问题。当我这样做时:

mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(150000);
mLocationRequest.setFastestInterval(30000);
mLocationRequest.setMaxWaitTime(900000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
mLocationRequest.setSmallestDisplacement(25);

Location location = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); 
if (location == null) { Log.w(TAG, "getLastLocation return null"); }
else { onLocationChanged(location); }

LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);

问题是LocationServices.FusedLocationApi.getLastLocation返回null。通常这不是一个大问题,因为我们也设置requestLocationUpdates。但问题是requestLocationUpdates需要很长时间才能返回。我怎么能说requestLocationUpdates尽可能快地返回第一个位置,并按照我们配置mLocationRequest的间隔返回以下位置?

1 个答案:

答案 0 :(得分:1)

你应该创建2个不同的位置请求,一个用于常规位置更新的位置请求,还有一个这样的位置请求,以便快速获取当前位置:

mLocationRequest2 = new LocationRequest();
mLocationRequest2.setInterval(500);
mLocationRequest2.setFastestInterval(0);
mLocationRequest2.setMaxWaitTime(1000);
mLocationRequest2.setNumUpdates(1);
mLocationRequest2.setPriority(LocationRequest.HIGH_ACCURACY);

setNumUpdates将确保只调用一次LocationRequest。