我有一个已经运行了几年的应用程序,但是最近,我收到了关于定位系统不能正常工作的报告。我把这个问题追溯到了LocationCallback.onLocationAvailability(availability: LocationAvailability?)。它总是与availability.isLocationAvailable = false一起调用。
描述表明它是假的,这意味着我不能指望从其他函数LocationCallback.onLocationResult(locationResult: LocationResult?)中得到任何位置,但是结果很好,而且这个位置似乎足够正确。
谁能告诉我,我是否可以简单地忽略isLocationAvailable = false,只使用他们的定位结果,而不冒任何风险得到错误的读数或低精度或诸如此类的?
我为LocationRequest尝试过不同的设置,其中任何一个都没有问题--只是可用性仍然会被false调用。结果本身很好。
权限是公平和公正的,我也尝试过只使用ACCESS_FINE_LOCATION,只使用ACCESS_COARSE_LOCATION,而且两者都有。设备上启用了位置。
在过去的几周里,FusedLocation系统的内部运作是否发生了变化?它已经完美运作多年了?
代码:
var locationRequest: LocationRequest = LocationRequest.create().apply {
interval = 10000
fastestInterval = 5000
priority = LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY
}在初始化和启动位置更新时,我使用以下代码段:
val locationClient = LocationServices.getFusedLocationProviderClient(this)
val builder = LocationSettingsRequest.Builder().addLocationRequest(locationRequest)
val client: SettingsClient = LocationServices.getSettingsClient(this)
val task: Task<LocationSettingsResponse> = client.checkLocationSettings(builder.build())
task.addOnSuccessListener { locationSettingsResponse ->
locationClient?.requestLocationUpdates(locationRequest, locationCallback, null)
}使用这个LocationCallback:
val locationCallback = object : LocationCallback() {
override fun onLocationResult(locationResult: LocationResult?) {
locationResult ?: return
if (locationResult.locations.isNotEmpty()) {
val location = locationResult.locations[0]
}
}
override fun onLocationAvailability(availability: LocationAvailability?) {
availability?.isLocationAvailable <-- This is always false!
}
}发布于 2021-09-10 09:50:55
此问题是由新的Google服务更新(21.30.16版)引起的。
请参阅:https://issuetracker.google.com/issues/198176818
根据2021年9月9日,他们说:
我们暂时回滚了一些关于isLocationAvailable()的逻辑,您应该注意到行为在接下来的24小时左右恢复正常。
https://stackoverflow.com/questions/69076730
复制相似问题