Kotlin-FusedLocationClient.requestLocationUpdates LocationRequest Param错误

zdwk9cvp  于 2023-06-06  发布在  Kotlin
关注(0)|答案(1)|浏览(527)

我尝试将一个LocationRequest作为第一个parameter添加到fusedLocationClient.requestLocationUpdates,但我一直收到错误
不能使用提供的参数调用下列函数。
· requestLocationUpdates(LocationRequest、LocationCallback、Looper?)在com.google.android.gms.location.FusedLocationProviderClient中定义
不能使用提供的参数调用以下函数:
public abstract fun requestLocationUpdates(p0:位置请求,p1:位置回调,p2:Looper?):Task<Void!>在com.google.android.gms.location.FusedLocationProviderClient中定义
public abstract fun requestLocationUpdates(p0:位置请求,p1:LocationListener,第2页:Looper?):Task<Void!>在com.google.android.gms.location.FusedLocationProviderClient中定义
public abstract fun requestLocationUpdates(p0:位置请求,p1:执行人,p2:LocationCallback):任务<Void!>在com.google.android.gms.location.FusedLocationProviderClient中定义
public abstract fun requestLocationUpdates(p0:位置请求,p1:执行人,p2:LocationListener):任务<Void!>在com.google.android.gms.location.FusedLocationProviderClient中定义
如图所示,LocationCallbackLooper?工作正常。我使用的是第一个建议,LocationRequest是红色的。

我跟踪了google doc code的startLocationUpdates(),这就是下面错误的位置。
在清单中,我分别尝试了这两种方法:

implementation 'com.google.android.gms:play-services-location:21.0.1'
implementation 'com.google.android.gms:play-services-location:21.0.1@aar'

代码:

import android.content.Context
import android.content.Intent
import android.location.*
import android.location.LocationRequest
import android.os.Build
import android.os.Looper
import androidx.annotation.RequiresApi
import com.google.android.gms.location.*
import java.util.*
import android.provider.Settings

class LocationSupervisor(val context: Context) {

    private var fusedLocationClient: FusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(context.applicationContext)
    private lateinit var locationRequest: LocationRequest
    private lateinit var locationCallback: LocationCallback

    init {

        fusedLocationClient.lastLocation.addOnSuccessListener { }

        locationRequest = LocationRequest.Builder(60000L).apply {
            this.setQuality(LocationRequest.QUALITY_HIGH_ACCURACY)
        }.build()

        locationCallback = object : LocationCallback() {
            override fun onLocationResult(locationResult: LocationResult) {
                for (location in locationResult.locations) { ... }
            }
        }
    }

    fun startLocationUpdates() {
                                     // Error is on this 1st Param
        fusedLocationClient.requestLocationUpdates(locationRequest, locationCallback, Looper.getMainLooper())
    }

    fun stopLocationUpdates() {
        fusedLocationClient.removeLocationUpdates(locationCallback)
    }
}
h6my8fg2

h6my8fg21#

    • 导入错误**

首先纠正导入
import android. location. LocationRequest

    • import com. google. android. gms. location. LocationRequest**

然后使用此代码进行位置请求:

locationRequest = LocationRequest.Builder(60000L)
            .setPriority(Priority.PRIORITY_HIGH_ACCURACY)
            .build()

另外,我建议使用我的开源库。

implementation("com.github.GatewayLegends:general-location-service:0.1.4")

你可以在GitHub上找到通用位置服务,链接如下:https://github.com/GatewayLegends/general-location-service
我鼓励您探索存储库,查看文档,并在您的项目中尝试它。我相信,您会发现它是一项宝贵的资产,可以节省您在基于位置的操作中的时间和精力。如果你觉得有用的话,就在Github上放上星号,并投票支持这个答案。
如果你觉得通用位置服务很有用,我恳请你考虑在GitHub上展示你的支持。此外,如果你欣赏这个建议,一个upvote将不胜感激。感谢您的关注!

相关问题