如何在安卓科特林获得位置只有一次

问题描述

我只想得到位置在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每次除非我打开谷歌地图&运行我的应用程序则返回位置正确地

现在我知道我需要在调用 requestLocationUpdates 之前调用 lastLocation,但是我无法在 kotlin 中找到任何解释如何将它用于 just one time解决方案。每一个解决方案暗示连连获取位置。

反正是有,我可以用requestLocationUpdates只是为了获得位置一次?

解决方法

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

fusedLocationClient.getCurrentLocation(LocationRequest.PRIORITY_HIGH_ACCURACY,null)