从 FusedLocationProvider (Google Play Services) 获取位置的精度低于 10 米
Getting the location from FusedLocationProvider (Google Play Services) doesn’t give accuracy below 10 meters
我们正在使用 Google Play 服务获取位置更新:
LocationRequest mLocationRequestHighAccuracy = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setFastestInterval(500)
.setInterval(500);
FusedLocationProviderClient locationProviderClient = LocationServices.getFusedLocationProviderClient(context);
Task<Void> task = locationProviderClient.requestLocationUpdates(getLocationRequestHighAccuracy(context), getActivityDetectionPendingIntent(context));
task.addOnSuccessListener(new OnSuccessListener<Void>() {<snip>}
出于某种原因,大多数时候,我们只能获得 10 米的精度。
但是,如果我们在 android.location 中注册到 LocationManager,我们将获得 4 米甚至 3 米的精度。代码片段:
android.location.LocationManager locationManager = (android.location.LocationManager)
appContext.getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(android.location.LocationManager.GPS_PROVIDER, 500, 0, mLocationListener);
我们想使用 Google Play 服务,因为它的修复时间更快,并且与更多传感器融合,但我们需要最准确的结果。我不明白融合位置提供程序如何提供不如 gps 提供程序准确的结果。
有谁知道如何强制 Google Play 服务为我们提供更准确的结果?到目前为止,我们唯一的解决方案是同时注册,从 Google Play Services 获取 lat/lon 并从原始 GPS 获取精度(如果它较低)。但这似乎是一个 hack…
谢谢。
如果您想要最准确的结果,请使用 GPS。 Fused 位置的想法是,您可以牺牲准确性来换取更快的定位时间、更少的电池使用等。如果这不是您需要的,只需使用 GPS。你不能既吃蛋糕又吃蛋糕。
至于它如何提供不如 GPS 的准确性 - 它更多地依赖网络位置而不是 GPS 数据来节省电池。唯一比 GPS 更准确的是短距离信号三角测量,为此你需要无处不在的蓝牙信标和它们的准确地图。手机配备 GPS 硬件是有原因的 - 因为这是在极少数情况下获取位置的最准确方法。如果 Fused 更准确,他们会删除它并节省硬件成本。
我们正在使用 Google Play 服务获取位置更新:
LocationRequest mLocationRequestHighAccuracy = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setFastestInterval(500)
.setInterval(500);
FusedLocationProviderClient locationProviderClient = LocationServices.getFusedLocationProviderClient(context);
Task<Void> task = locationProviderClient.requestLocationUpdates(getLocationRequestHighAccuracy(context), getActivityDetectionPendingIntent(context));
task.addOnSuccessListener(new OnSuccessListener<Void>() {<snip>}
出于某种原因,大多数时候,我们只能获得 10 米的精度。
但是,如果我们在 android.location 中注册到 LocationManager,我们将获得 4 米甚至 3 米的精度。代码片段:
android.location.LocationManager locationManager = (android.location.LocationManager)
appContext.getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(android.location.LocationManager.GPS_PROVIDER, 500, 0, mLocationListener);
我们想使用 Google Play 服务,因为它的修复时间更快,并且与更多传感器融合,但我们需要最准确的结果。我不明白融合位置提供程序如何提供不如 gps 提供程序准确的结果。
有谁知道如何强制 Google Play 服务为我们提供更准确的结果?到目前为止,我们唯一的解决方案是同时注册,从 Google Play Services 获取 lat/lon 并从原始 GPS 获取精度(如果它较低)。但这似乎是一个 hack…
谢谢。
如果您想要最准确的结果,请使用 GPS。 Fused 位置的想法是,您可以牺牲准确性来换取更快的定位时间、更少的电池使用等。如果这不是您需要的,只需使用 GPS。你不能既吃蛋糕又吃蛋糕。
至于它如何提供不如 GPS 的准确性 - 它更多地依赖网络位置而不是 GPS 数据来节省电池。唯一比 GPS 更准确的是短距离信号三角测量,为此你需要无处不在的蓝牙信标和它们的准确地图。手机配备 GPS 硬件是有原因的 - 因为这是在极少数情况下获取位置的最准确方法。如果 Fused 更准确,他们会删除它并节省硬件成本。