如何在Kotlin中请求GPS位置更新



我正在开发一个Android应用程序(使用Kotlin),需要每2-3秒访问用户的位置。在过去的几天里,我一直在研究(和测试)解决方案,但我似乎只找到了Java中的例子(不容易翻译成Kotlin)。我也无法从Android的教程中理解它。

我已经做了什么:

  • 请求权限(前台&背景GPS位置访问)
  • 在尝试使用它之前确保它们已被接受
  • 实现onLocationChanged()方法
  • 访问最后一个位置(并使用它)

我想更新位置,这样,通过访问最后一个位置,我可以使用Android知道的最新位置。

这是我尝试过的,我认为可能更接近实际的解决方案(但这绝对是错误的):

val locationListener: LocationListener = this
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 5000, 10, locationListener
)

正确的做法是什么?谢谢你。

这对我有用,不要忘记先请求gps许可:

package com.example.gpsexample
import android.annotation.SuppressLint
import android.content.Context
import android.content.Context.LOCATION_SERVICE
import android.location.LocationManager
class LocationUpdates(context: Context) {
private val mGpsLocationClient: LocationManager =
context.getSystemService(LOCATION_SERVICE) as LocationManager
@SuppressLint("MissingPermission")
fun start(){
mGpsLocationClient.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
0L ,
0f ,
locationListener
)
}
private val locationListener =
android.location.LocationListener { location -> //handle location change
println(location)
}

}

首先,您可以在Kotlin中使用java代码,android Studio将自动如果您复制粘贴Java代码,请将Java转换为kotlin。

为谷歌地图更新你使用新的谷歌地图api。检查这些链接来实现新的谷歌地图api请求:https://stackoverflow.com/a/62155149/16728174https://developers.google.com/maps/documentation/android-sdk/start

对于位置更新使用Interval:

mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(5);
mLocationRequest.setFastestInterval(1);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

查看此链接获取有关setfaststinterval ();的信息和setInterval ();差异:https://stackoverflow.com/a/26407873/16728174

相关内容

  • 没有找到相关文章

最新更新