从FusedLocationProvider(Google Play服务)获取位置不会使精确度低于10米

时间:2018-05-03 14:03:15

标签: android google-play-services locationmanager

我们正在使用Google Play服务获取位置信息:

<div class="product-buttons">
  <a class="button-info" href="https://www.mylink.com">Link i want to copy</a>
</div>

<div class="product-price">
  <div class="price-standard">
    <span class="price-amount">
      49,00 eur
    </span>
  </div>
  <a class="new-button" href="https://www.this_is_where_i_want_the_link_above_to_appear.com">Read more</a>
</div>

出于某种原因,大多数时候,我们只能获得10米的准确度。

但是,如果我们在android.location中注册到LocationManager,我们会得到4m的准确度,有时甚至是3m。代码段:

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>}

我们希望将Google Play服务用于更快的修复时间,以及与更多传感器的融合,但我们需要最准确的结果。我不明白融合位置提供商如何提供比gps提供商更不准确的结果。

有谁知道如何强制Google Play服务为我们提供更准确的结果?到目前为止,我们唯一的解决方案是注册两者,从Google Play服务获取lat / lon和原始GPS的准确性(如果它更低)..但这似乎是一个黑客......

感谢。

1 个答案:

答案 0 :(得分:0)

如果您想获得最准确的结果,请使用GPS。融合位置的想法是,您需要更换准确性以换取更快的修复时间,更少的电池使用等。如果这不是您所需要的,只需使用GPS即可。你不能吃蛋糕也吃。

至于它如何提供比GPS更低的准确性 - 它更依赖于网络位置而更少依靠GPS数据来节省电池。唯一比GPS更精确的是短距离信号三角测量,为此您需要无处不在的蓝牙信标以及精确的地图。这就是为什么手机具有GPS硬件的原因 - 因为它是在极少数情况下获取位置的最准确方式。如果Fused更准确,他们会将其删除并节省硬件成本。