【问题标题】:How to get location just once in android (kotlin)如何在android(kotlin)中只获取一次位置
【发布时间】:2021-04-12 14:41:54
【问题描述】:

我只想在 android 应用中获取一次位置。这就是我试图获取位置的方式

AndroidManifest.xml

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

在我的片段中

private lateinit var fusedLocationClient: FusedLocationProviderClient


// in onCreateView
fusedLocationClient = LocationServices.getFusedLocationProviderClient(requireActivity())

// in function after checking permission
        fusedLocationClient.lastLocation
                .addOnSuccessListener { location: Location? ->
                    if (location != null) {

                    }
                }

现在位置每次都返回null,除非我打开谷歌地图并运行我的应用程序,然后它会正确返回位置

现在我知道在调用lastLocation 之前我需要先调用requestLocationUpdates,但我无法在kotlin 中找到任何解释如何将其用于just one time 的解决方案。每个解决方案都建议一次又一次地获取位置。

无论如何我可以使用requestLocationUpdates 来获取一次位置吗?

【问题讨论】:

标签: android kotlin android-location android-maps


【解决方案1】:

最新版play-services-location添加方法getCurrentLocation()

fusedLocationClient.getCurrentLocation(LocationRequest.PRIORITY_HIGH_ACCURACY, null)

【讨论】:

  • 您如何将 null 作为取消令牌传递...?
  • 当时最新版本是18.0.0。 19.0.0 中添加了@NonNull 注释
  • 我最终只是实例化了一个新的 CTS,我没有来自其他任何地方的 CTS...
猜你喜欢
  • 2011-06-11
  • 2018-02-08
  • 1970-01-01
  • 2018-12-21
  • 2018-02-14
  • 2020-07-13
  • 2014-06-17
  • 1970-01-01
相关资源
最近更新 更多