在Android Pie 9.0中,FusedLocationProviderClient返回错误的纬度和经度。

4

我在使用FusedLocationProviderClient获取经纬度时遇到了问题,仅在Android Pie版本中出现,而在9.0(Pie)以下的版本中可以正确获取位置信息。

每次调用getLocation()方法时,FusedLocationProviderClient都会提供相同的经纬度。

  mFusedLocationClient.getLastLocation().addOnSuccessListener(new OnSuccessListener<Location>() {
                    @Override
                    public void onSuccess(Location location) {
                        if (location != null) {
                            wayLatitude = location.getLatitude();
                            wayLongitude = location.getLongitude();
                            Log.e("Location11", "" + String.format(Locale.US, "%s - %s", wayLatitude, wayLongitude));

                        } else {
                            mFusedLocationClient.requestLocationUpdates(locationRequest, locationCallback, null);
                        }
                    }
                });

我每次都得到相同的纬度和经度。 例如: 纬度 - 28.303303303303 经度 - 77.411411411


“上次已知位置”不会更新,除非某些应用程序调用“requestLocationUpdates()”。也许您在该设备上被困在一个过时的位置(?)打开谷歌地图并等待它指向您当前的位置将有所帮助。真正的解决方案是在您自己的应用程序中始终请求位置更新。如果您不需要连续更新,则可以在第一个结果后取消请求。 - Markus Kauppinen
1
@MarkusKauppinen 我也是这样做的,但它在 Android Pie 以下的版本中完美运行。 - Prateek Gupta
2个回答

2
使用FusedLocationProviderApi并将LocationRequest的优先级设置为PRIORITY_HIGH_ACCURACY。
这是用于精确位置获取的最新API,Google建议使用相同的方法。
查看准确性详情(Android位置提供程序-GPS或网络提供程序?
基本上,Google Play服务API具有通过融合GPS + NetworkProvider +被动提供程序获取精确位置的智能功能。

但是FusedLocationProviderApi已经过时了,根据我阅读的FusedLocationProviderClient文档,它是最新的。 - Prateek Gupta

1
提供双重许可:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

"

ACCESS_FINE_LOCATION将会给出正确的结果。

"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接