问题描述
我使用 Fused Location Provider 在后台使用定位服务,当我调用方法 getProvider() 而不是 Network 或 GPS 时,它返回“fused”。有什么办法可以从中获得提供者吗?
我知道使用带有 GPS 位置的 LocationManager 我可以获得 GPS 或网络,但是当我尝试在后台服务中使用它时监听器被杀死了。
locationRequest = new LocationRequest();
locationRequest.setInterval(10000);
locationRequest.setFastestInterval(5000);
locationRequest.setSmallestdisplacement(3);
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
this.locationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
super.onLocationResult(locationResult);
Location currentLocation = locationResult.getLastLocation();
Log.d("currentProvider",currentLocation.getProvider());
}
};
this.mFusedLocationClient = LocationServices.getFusedLocationProviderClient(MyApplication.getAppContext());
if (ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_BACKGROUND_LOCATION) != PackageManager.PERMISSION_GRANTED) {
} else {
this.mFusedLocationClient.requestLocationUpdates(this.locationRequest,this.locationCallback,Looper.myLooper());
}
解决方法
有什么办法可以从中获取提供者吗?
你是。它是融合的提供者。融合提供商提供的位置不仅基于 GPS 和网络提供商,而且还基于其他数据源,使用专有算法进行计算。