如何在 android 中仅获取一次位置 (kotlin)

How to get location just once in android (kotlin)

我只想在 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 位置,除非我打开 google 地图和 运行 我的应用程序然后 returns 位置正确

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

我是否可以使用 requestLocationUpdates 仅获取一次位置?

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

fusedLocationClient.getCurrentLocation(LocationRequest.PRIORITY_HIGH_ACCURACY, null)