小编Chr*_*ian的帖子

FusedLocationProviderClient 始终报告 LocationAvailability false

我有一个应用程序已经运行了几年,但最近,我收到了有关定位系统无法正常运行的报告。我已将问题追溯到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 
    }
Run Code Online (Sandbox Code Playgroud)

初始化并开始位置更新时,我使用以下片段:

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)
}
Run Code Online (Sandbox Code Playgroud)

并使用这个 LocationCallback:

val locationCallback = …
Run Code Online (Sandbox Code Playgroud)

android google-maps kotlin fusedlocationproviderapi android-fusedlocation

6
推荐指数
1
解决办法
845
查看次数