use*_*002 2 gps android location
我的应用程序显示导航图,如果当前 GPS 位置可用,它也会显示。我在一艘沿着已知路线行驶的船上对此进行了测试。有时会显示正确的位置。有时我会得到旧的 GPS 位置,即使是在要求重新读取时也是如此。有时,它似乎会卡在旧位置进行多次读取。当这种情况发生时,我运行了谷歌地图,它似乎清除了错误,我又开始获取新的位置。
// try to look at GPS....
status1 = checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION);
if (status1 != PackageManager.PERMISSION_GRANTED)
{ requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION},10);
}
status2 = checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION);
Object cancellationToken = null;
if (status2 == PackageManager.PERMISSION_GRANTED)
fusedLocationClient.getCurrentLocation(PRIORITY_HIGH_ACCURACY, (CancellationToken) cancellationToken)
.addOnSuccessListener(this, location -> // using lambda expression...
{ if (location != null)
{ GPSLatitude = location.getLatitude();
GPSLongitude = location.getLongitude();
gotGPS = true;
//if we have a location, and it is on chart, draw the blue dot....
Run Code Online (Sandbox Code Playgroud)
谷歌地图比我更擅长读取 GPS。我应该考虑另一种方法吗?
欢迎加入那些在谷歌的手下受苦的人们的俱乐部FusedLocationProvider,我建议您改用LocationManagerGPS提供商。可用于请求您的Activityas中的位置
fun getLocation() {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// do proper permissions handling
return
}
val locationManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager
val gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)
if (gpsEnabled) {
// Register for location updates
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0.0f, locationListener)
// Or get last known location
val location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER)
}
}
private val locationListener = LocationListener {
// Do something with the location
}
Run Code Online (Sandbox Code Playgroud)
FusedLocationProvider可能会提供不准确的位置在某些情况下,我发现它FusedLocationProvider相当不准确,在最近的一次经历中,与您的经历没有什么不同,我无法FusedLocationProvider在我的应用程序中使用 GPS 锁定,当我打开谷歌地图时,GPS 锁定引脚会立即出现。所以我做了一些研究,果然我发现了错误,FusedLocationProvider并且最终使用了LocationManger,至于为什么它会这样,我遇到的一些要点是
Fused,意味着它使用多种来源(WiFi、网络、GPS 等),它会选择它认为合适的来源,或混合使用所有来源来决定位置FusedLocationProvider的最大卖点是它针对电池使用进行了优化,因此只要它可以为您提供位置(通常准确,但并非总是如此),如果它确定调用会给硬件带来不必要的负载,它就不会影响硬件。电池FusedLocationProvider如何FusedLocationProvider影响之前使用的数据收集应用程序的位置准确性LocationManger
FusedLocationProvider由于缓存而导致问题
FusedLocationProvider在某些情况下表现不佳的原因
如何FusedLocationProvider提供不准确的结果,请参阅得票第二高的答案
| 归档时间: |
|
| 查看次数: |
3234 次 |
| 最近记录: |