FusedLocationProviderClient 在 Android Pie 9.0 中返回错误的纬度经度
Posted
技术标签:
【中文标题】FusedLocationProviderClient 在 Android Pie 9.0 中返回错误的纬度经度【英文标题】:FusedLocationProviderClient returns wrong latitude longitude in Android Pie 9.0 【发布时间】:2019-10-20 20:36:08 【问题描述】:我在仅在 android Pie 中使用 FusedLocationProviderClient 获取纬度经度时遇到问题,我在 Android 版本 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()”。也许您在该设备上遇到了一个不是最新的位置(?)打开谷歌地图并等待它指向您当前的位置在这种情况下会有所帮助。一个真正的解决方案是始终在您自己的应用程序中请求位置更新。如果您不需要持续更新,则可以在第一个结果后取消请求。 @MarkusKauppinen 我也做了同样的事情,但它在 Android Pie 下完美运行 【参考方案1】:使用 FusedLocationProviderApi 并将 LocationRequest 优先级设置为 PRIORITY_HIGH_ACCURACY
这是用于准确获取位置的最新 API,Google 建议使用相同的 API。
检查准确性详细信息 (Android Location Providers - GPS or Network Provider?)
基本上,Google play services API 具有通过融合 GPS+NetworkProvider+被动提供商获得准确位置的智能。
【讨论】:
但 FusedLocationProviderApi 已被弃用,FusedLocationProviderClient 是我阅读 FusedLocationProviderClient 文档时最新的一个【参考方案2】:同时提供权限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
ACCESS_FINE_LOCATION
会给出正确的结果。
【讨论】:
以上是关于FusedLocationProviderClient 在 Android Pie 9.0 中返回错误的纬度经度的主要内容,如果未能解决你的问题,请参考以下文章