Android: 使用FusedLocationProviderClient 获取一次位置?

Android: Use FusedLocationProviderClient to get location once?

随着 FusedLocationProviderApi 被弃用,我很难使用 FusedLocationProviderClient 在单击按钮后仅一次获取用户的位置。

I'm having a hard time using FusedLocationProviderClient to get location of the user just once...

FusedLocationProviderClient有以下方法

其中 LocationRequest, in its turn, has the setNumUpdates (int numUpdates) 方法。通过传递 numUpdates = 1,您将 "get location of the user just once"

新版本play-services-location增加了方法getCurrentLocation()

这就是我获取位置的方式

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

然后在获取位置权限代码后,这就是我获取位置的方式

  fusedLocationClient.getCurrentLocation(LocationRequest.PRIORITY_HIGH_ACCURACY, null)
  fusedLocationClient.lastLocation
                .addOnSuccessListener { location: Location? ->
                    // Got last known location. In some rare situations this can be null.
                    if (location != null) {
                        textView.setText(getLocationNameFromLatLon(location.latitude, location.longitude))
                    }
                }