kotlin 如何在循环器中停止fusedLocationProviderClient

sirbozc5  于 2023-06-24  发布在  Kotlin
关注(0)|答案(2)|浏览(114)

我对Kotlin有点新,所以这可能是一个超级容易的修复。基本上,我遵循了一个教程来获得gps位置使用fusedLocationProviderClient和我试图停止looper一旦它找到一个位置(iidoe.com)。我想让它找到一个位置然后停下来)。我对loopers不是很熟悉,但是我如何创建一个与fusedLocationProviderClient一起工作的looper,在找到一个位置后可以退出。
下面是代码:

private fun setUpLocationListener() {
    checkSmsPermission(PERMISSION_FINE_LOCATION)
    val fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this)
    // for getting the current location update after every 2 seconds with high accuracy
    val locationRequest = LocationRequest().setInterval(2000).setFastestInterval(2000)
        .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)

    fusedLocationProviderClient.requestLocationUpdates(
        locationRequest,
        object : LocationCallback() {
            override fun onLocationResult(locationResult: LocationResult) {
                Log.d(TAG, "Location found")
                super.onLocationResult(locationResult)
                for (location in locationResult.locations) {
                    Log.d(TAG, location.latitude.toString())
                    Log.d(TAG,location.longitude.toString())
                }
                if (locationResult.locations.size > 0){
                    // I want to quit here
                }
            }
        },
        Looper.myLooper()!!
    )
}

大多数情况下,我认为我需要一点帮助,如何使用loopers与fusedLocationProviderClient创建一个looper,我可以退出从里面。
先谢谢你的帮助

bgtovc5b

bgtovc5b1#

您可以从fusedClient发送removeLocationUpdates以停止接收更新

override fun onLocationResult(locationResult: LocationResult) {
     Log.d(TAG, "Location found")
     super.onLocationResult(locationResult)
     for (location in locationResult.locations) {
          Log.d(TAG, location.latitude.toString())
          Log.d(TAG,location.longitude.toString())
     }
     if (locationResult.locations.size > 0){
          fusedLocationProviderClient.removeLocationUpdates(this)
     }
}
wn9m85ua

wn9m85ua2#

对于那些可能和我有同样问题的人,我是这样做的:对于位置请求变量,我只是删除了“.setInterval(2000).setFastestInterval(2000)"。显然,启用这些功能后,GPS位置总是会被重新找到。

相关问题