首页 > 解决方案 > FusedLocationProviderClient 在 Sony Xperia Z2 上的 onLocationAvailability 回调中始终返回 false

问题描述

FusedLocationProviderClient 在 Sony Xperia Z2 上的 onLocationAvailability 回调中始终返回 false。授予权限,启用位置。在位置偏好设置选项中使用 wifi、网络和 gps。在模拟器、三星、BQ、Nexus、小米上一切正常。操作系统版本从 6 到 8。但是在 Sony(andorid 6.0.1)上我有这个问题。有任何想法吗 ?我完蛋了

打回来

private val mUserLocationCallback = object : LocationCallback() {

    override fun onLocationAvailability(locationAvailability: LocationAvailability?) {
        super.onLocationAvailability(locationAvailability)
        val isAvalable = locationAvailability?.isLocationAvailable ?: false
        if (!isAvalable) {
            mLocationHelperListener.onLocationUnAvailable()
            mDefaulLocation?.let { mLocationHelperListener.onLocationHelperChanged(it) }
            stopLocationUpdates()
        }
    }

    override fun onLocationResult(locationResult: LocationResult?) {

        if (locationResult != null) {
            for (location in locationResult.locations) {
                mPreferences?.lastLatitude = location.latitude.toFloat()
                mPreferences?.lastLongitude = location.longitude.toFloat()
                mLocationHelperListener.onLocationHelperChanged(location)
                stopLocationUpdates()
                break
            }
        }

    }
}

要求

val locationRequest = LocationRequest.create()
                    .setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY)
                    .setInterval(UPDATE_INTERVAL)
                    .setFastestInterval(FASTEST_INTERVAL)
                    .setSmallestDisplacement(SMALLEST_DISTANCE)


            // Create LocationSettingsRequest object using location request
            val builder = LocationSettingsRequest.Builder()
            builder.addLocationRequest(locationRequest)
            val locationSettingsRequest = builder.build()

            val settingsClient = LocationServices.getSettingsClient(mContext)
            val task = settingsClient.checkLocationSettings(locationSettingsRequest)
            task.addOnSuccessListener { locationSettingsResponse: LocationSettingsResponse? ->
                mFusedLocationClient.requestLocationUpdates(locationRequest, mUserLocationCallback, null)
            }
            task.addOnFailureListener { exception: Exception ->
                mLocationHelperListener.onLocationUnAvailable()
            }

标签: kotlinfusedlocationproviderapi

解决方案


我有一个非常相似的问题;重启我的手机解决了这个问题。我在几台设备上进行了测试,但唯一有问题的设备是 ZTE Maven Z812。


推荐阅读