从 Fused Location Provider 获取 GPS 或网络提供商

Posted

技术标签:

【中文标题】从 Fused Location Provider 获取 GPS 或网络提供商【英文标题】:Obtain GPS or Network provider from Fused Location Provider 【发布时间】:2021-05-03 17:52:45 【问题描述】:

我正在使用 Fused Location Provider 在后台使用定位服务,当我调用方法 getProvider() 而不是 Network 或 GPS 时,它会返回“fused”。有没有办法让我从中获取提供者?

我知道将 LocationManager 与 GPS 位置结合使用可以获取 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());
        

【问题讨论】:

【参考方案1】:

有没有办法让我从中获取提供者?

你是。它是融合的提供者。融合提供商提供的位置不仅基于 GPS 和网络提供商,还基于其他数据源,使用专有算法进行计算。

【讨论】:

以上是关于从 Fused Location Provider 获取 GPS 或网络提供商的主要内容,如果未能解决你的问题,请参考以下文章

Fused Location Provider 无故停止

使用 Fused Location Provider 查找位置源

Fused Location Provider 是不错的选择吗?

使用 Location Manager 和 Fused Location Provider Api 获取位置有啥区别?

使 Fused Location Provider LocationClient 更易于使用

如何在 Service 类中使用 Fused Location Provider?