我尝试将一个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中定义
如图所示,LocationCallback
和Looper?
工作正常。我使用的是第一个建议,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)
}
}
1条答案
按热度按时间h6my8fg21#
首先纠正导入
import android. location. LocationRequest
然后使用此代码进行位置请求:
另外,我建议使用我的开源库。
你可以在GitHub上找到通用位置服务,链接如下:https://github.com/GatewayLegends/general-location-service
我鼓励您探索存储库,查看文档,并在您的项目中尝试它。我相信,您会发现它是一项宝贵的资产,可以节省您在基于位置的操作中的时间和精力。如果你觉得有用的话,就在Github上放上星号,并投票支持这个答案。
如果你觉得通用位置服务很有用,我恳请你考虑在GitHub上展示你的支持。此外,如果你欣赏这个建议,一个upvote将不胜感激。感谢您的关注!