FusedLocationApi 性能问题:精度似乎上限为 10.0 米

Posted

技术标签:

【中文标题】FusedLocationApi 性能问题:精度似乎上限为 10.0 米【英文标题】:FusedLocationApi Performance Issue: Accuracy seems capped at 10.0 meters 【发布时间】:2018-08-09 05:28:56 【问题描述】:

我遇到了一个奇怪的问题,FusedLocationProviderAPI 没有给我比 10.0 米更好的准确度数。 它开始像往常一样给我很高的数字,例如 56 米... 24... 13... 然后保持在 10.0。似乎在给予方面没有比这更好的上限。

在手机 Sony Xperia Z2华为荣耀 8

上试用
location.getAccuracy() //Seems capped at 10.0 meters

奇怪的是,当外面天气好时,我收到的准确度数字低至 3.0 米左右,我不记得更改手机 GPS 选项/也没有任何与 GPS 服务类相关的选项。

我的应用依赖于能够获得尽可能高的准确度数字。这里可能是什么问题?电话本身?请求的设置?数量上限的可能原因?

编辑:在尝试华为时遇到了同样的问题。那么代码似乎有问题?就像在 x 数量的位置请求准确度被系统限制在 10.0 之后一样?

我的 GPS 服务中的相关内容:

清单

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />

服务

private long UPDATE_INTERVAL = 2 * 1000;  /* 10 secs */
private long FASTEST_INTERVAL = 2000; /* 2 sec */
static final int MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION = 1;

private void requestLocation() 
    locationRequest = new LocationRequest();
    locationRequest.setInterval(UPDATE_INTERVAL);
    locationRequest.setFastestInterval(FASTEST_INTERVAL);
    locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    gac = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(LocationServices.API)
            .build();


@Override
public void onLocationChanged(Location location) 

    locationData = location; //1. Set local field to incoming location
    gpsAccuracy = location.getAccuracy(); //2. Est. horizontal accuracy of location, radial, in meters.

【问题讨论】:

我一直遇到同样的问题,尽管使用 Cordova 来获得准确性。出乎意料的是,现在它的上限为 10m。你找到原因了吗? @Mirko 嗨,Mirko,不,不幸的是,我在任何地方都没有找到任何答案……至少现在还有一个人和我遇到了同样的问题。老实说,我认为有更多的人遇到与我们相同的事情......但他们根本没有调用 location.getAccuracy()。我们可以问谷歌开发者吗?或者我们能做什么? 我把你的问题链接在这里***.com/questions/49348489/… 更多问题弹出,见***.com/questions/49656301/… 我遇到了同样的问题,并在 Google issuetracker.google.com/u/1/issues/79189573 和他们的样本中创建了一个可重现的测试用例 github.com/googlesamples/android-play-location/issues/151。希望我们很快就会在这里。 【参考方案1】:

看起来 10 m 是使用 FusedLocationServicesApi 可以获得的最佳近似精度,优先级为 HIGH_ACCURACY。但是,我相信使用 LocationManager 可能会获得更好的准确性。看看这篇文章: http://www.tothenew.com/blog/googles-fused-location-api-for-android/

【讨论】:

问题是 Google 内部的。更新 Play 服务后,现在可以再次获得更高的准确性。

以上是关于FusedLocationApi 性能问题:精度似乎上限为 10.0 米的主要内容,如果未能解决你的问题,请参考以下文章

为啥 FusedLocationApi.getLastLocation 为空

使用 FusedLocationApi 获取离线位置

FusedLocationApi 的问题,已弃用

FusedLocationApi.getLastLocation 始终为空,即使 onCreated()

FusedLocationApi.getLastLocation 始终为空

FusedLocationApi.getLastLocation 在后台始终为空