HMS FusedLocationProvider和HuaweiMap无法正常工作

问题描述 投票:0回答:1

我使用此类来获取地图应用程序设备的当前位置。我在GooglePlayServices上使用了它,并且可以正常工作,但是如果设备上没有HMS,我最近将华为设备切换到GooglePlayServices。我用GooglePlayServices导入的lib中的镜像对象替换了所有HMS类,并且编译时没有错误。但是当我要求当前位置时,它将不会返回任何内容。没有例外,没有成功或失败。

我没有收到对onLocationResult()catch()块的回调。根据调试器,最后一行称为val task = lp.requestLocationUpdates(lr, this, Looper.getMainLooper())

有人遇到这个问题吗?这显然是新问题。在[Huawei P40不可用的GooglePlayServices上进行测试。此外,HuaweiMap在发布模式下也不起作用。 getMapAsync()将不会返回onMapReady()回调。它卡在那里。但是,如果我切换调试模式,则它可以正常工作。

UDPATE:

HuaweiMap现在正在工作。更新了proguard。但是位置仍然无法正常工作。即使在调试模式下,它也不起作用。代码:

private inner class LocationCbHua(val lp: com.huawei.hms.location.FusedLocationProviderClient, val onFailure: (()->Unit)? = null, val onSuccess: (GpsLocation)->Unit) : com.huawei.hms.location.LocationCallback() { init { val lr = com.huawei.hms.location.LocationRequest.create().apply { priority = com.huawei.hms.location.LocationRequest.PRIORITY_HIGH_ACCURACY interval = 200 } val lsr = com.huawei.hms.location.LocationSettingsRequest.Builder().run { // setAlwaysShow(true) // TEST addLocationRequest(lr) build() } val check = com.huawei.hms.location.LocationServices.getSettingsClient(activity!!).checkLocationSettings(lsr) check.addOnCompleteListener { try { check.getResultThrowException(com.huawei.hms.common.ApiException::class.java) val task = lp.requestLocationUpdates(lr, this, Looper.getMainLooper()) task.addOnFailureListener { onFailure?.invoke() } } catch (e: com.huawei.hms.common.ApiException) { when (e.statusCode) { com.huawei.hms.location.LocationSettingsStatusCodes.RESOLUTION_REQUIRED-> if(!locationResolutionAsked){ // Location settings are not satisfied. But could be fixed by showing the user a dialog. try { // Cast to a resolvable exception. val re = e as com.huawei.hms.common.ResolvableApiException // Show the dialog by calling startResolutionForResult(), and check the result in onActivityResult(). re.startResolutionForResult(mainActivity, MainActivity.REQUEST_LOCATION_SETTINGS) locationResolutionAsked = true } catch (e: Exception) { e.printStackTrace() } } com.huawei.hms.location.LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE->{ // Location settings are not satisfied. However, we have no way to fix the settings so we won't show the dialog. App.warn("Location is not available") onFailure?.invoke() } } } } } fun cancel(){ lp.removeLocationUpdates(this) currLocCb = null } override fun onLocationResult(lr: com.huawei.hms.location.LocationResult) { cancel() val ll = lr.lastLocation onSuccess(GpsLocation(ll.longitude, ll.latitude)) } }

我使用此类来获取地图应用程序设备的当前位置。我在GooglePlayServices上使用了它,并且工作正常,但是如果GooglePlayServices ...
android android-location huawei-mobile-services
1个回答
0
投票
可能的原因如下:
© www.soinside.com 2019 - 2024. All rights reserved.