java - 从 Fused Location Provider 获取 GPS 或网络提供商
问题描述
我正在使用 Fused Location Provider 在后台使用定位服务,当我调用方法 getProvider() 而不是 Network 或 GPS 时,它会返回“fused”。有没有办法让我从中获得提供者?
我知道使用带 GPS 位置的 LocationManager 可以获得 GPS 或网络,但是当我尝试在后台服务中使用它时,监听器会被杀死。
这是我在 onCreate 方法中的部分代码
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 和网络提供商,还基于其他数据源,使用专有算法进行计算。
推荐阅读
- angular - 我如何通过有角度的打字稿访问 MatStep 中的组件
- gcc - 抑制 gcc 中的“对 C/ObjC 有效,但对 C++ 无效”警告
- flutter - 颤振打开带有短信的whatsapp
- charts - ChartJS - 如何更改图表中某些数据点的颜色
- c - 收到警告:变量类型在浮点类型的函数中默认为 int *
- c - 'variable' 可能在此函数中未初始化使用,有一个可行的解决方法,但不明白为什么
- javascript - 逐个索引比较字符串字符并返回带有索引的不匹配字符
- apache-spark - 理想的 Spark 配置
- python-3.x - 如何在多个字典列表中进行迭代
- vue.js - 使用Vue + Chartjs时可以使用自定义数据格式吗