在安卓系统中选择LocationManager或FusedLocationClient相当容易,选择FusedLocationClient就可以了,因为它会节省电力,并且被推荐为最佳实践。
然而,在这种情况下,我必须获取设备的“初始位置”,或者仅仅是当前/最近已知的位置。在三种不同的场景中,FusedLocationClient可能会认为是空的。(see here)。
当然,当请求位置更新时,这种情况不会改变,直到设备的实际位置发生变化。(here)
在android framework提供的LocationManager中,你可以通过简单地调用mLocationManager.getLastKnownLocation(provider);来轻松地获取最近已知的位置,但是使用它来监听更新需要耗费大量的电力。
这里最好的解决方案是什么?将两者结合起来是否合理?如果是,如何仅使用LocationManager获取当前位置,然后禁用它以节省电力?
发布于 2018-04-04 19:18:35
你可以通过this document
private FusedLocationProviderClient mFusedLocationClient;
private LocationRequest mLocationRequest;
mLocationRequest = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setInterval(60000) ; // 10 seconds, in milliseconds
.setFastestInterval(10000); // 1 second, in milliseconds
if(mFusedLocationClient == null) {
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(mContext);
mFusedLocationClient.requestLocationUpdates(mLocationRequest,
locationCallback,
null /* Looper */);
}
private LocationCallback locationCallback = new LocationCallback(){
@Override
public void onLocationResult(LocationResult locationResult) {
super.onLocationResult(locationResult);
Location location = locationResult.getLastLocation();
if(location != null) {...you can get updated location
}}
//REMOVE LOCATION UPDATES
mFusedLocationClient.removeLocationUpdates(locationCallback);https://stackoverflow.com/questions/49649432
复制相似问题