我正在尝试获取 Android 设备的位置。我一直在按照这些说明使用 fusedLocationClient。
我不能在外部分配变量.addSuccessListener
。
我会在事件侦听器内部的日志之前调用侦听器外部的日志,因此我必须在调用侦听器之前尝试分配变量。这是有道理的,因为侦听器是异步的。
override fun onMapReady() {
var loc: Location = Location("")
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
fusedLocationClient.lastLocation
.addOnSuccessListener { location : Location ->
loc = location
Log.i("Lat, Long",loc.latitude.toString() + ", " + loc.longitude.toString()) // this correctly logs the latitude and longitude
}
Log.i("Lat, Long",loc.latitude.toString() + " " + loc.longitude.toString()) // this logs latitude and longitude as (0.0,0.0)
}
我尝试将 fusedLocationClient 初始化放入onCreate()
并将 fusedLocationClient 作为私有属性:
private fusedLocationClient: FusedLocationProviderClient
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_display_map)
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
fusedLocationClient.lastLocation
.addOnSuccessListener { location : Location ->
loc = location
Log.e(loc.latitude.toString(), loc.longitude.toString())
}
}
我也在 onResume 中尝试过,但仍然没有运气。