我今天面对新手机的问题。当我这样做时:
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
的间隔返回以下位置?
答案 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。