【问题标题】:Accuracy of GPS coordinates found in Android在 Android 中找到的 GPS 坐标的准确性
【发布时间】:2012-08-10 04:02:39
【问题描述】:

我正在开发一个需要不断更新我的 Android 手机位置的项目。它工作正常,但是非常不准确。在室内,我获取的位置精度(通过 getAccuracy())大约为 60(据我所知以米为单位),而我希望精度为(最大)2-3 米。 首先,不可能不断地获得(2-3米)的精度吗? 如果是,如何?

Follow 是我用来获取用户位置的代码。

    public boolean getLocation(Context context, LocationResult result)
{
    //I use LocationResult callback class to pass location value from MyLocation to user code.
        locationResult = result;

    if(lm==null)
        lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

    //exceptions will be thrown if provider is not permitted.
    try{gps_enabled=lm.isProviderEnabled(LocationManager.GPS_PROVIDER);}catch(Exception ex){}
    try{network_enabled=lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);}catch(Exception ex){}

    //don't start listeners if no provider is enabled
    if(!gps_enabled && !network_enabled)
        return false;

    if(gps_enabled)
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListenerGps);
    if(network_enabled)
        lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListenerNetwork);
    timer1=new Timer();
    timer1.schedule(new GetLastLocation(), 10000);
    return true;
}

我还遇到了另一个问题,我的设备一直放置在一个静态位置,获取的两个连续 GPS 位置之间的距离非常不可靠,它从 0.0 米变为 16 米,这意味着我的设备一直在移动。

如果你们中的任何人对此有任何想法,最好如何达到准确性,请帮助我。

谢谢

【问题讨论】:

    标签: android gps android-location


    【解决方案1】:

    除了使用 mintime 和 mindistance 之外,您还可以通过传入 Criteria 对象来获得更好的结果

    ACCURACY_FINE
    POWER_HIGH
    

    您的个人手机和物理环境显然会影响读数。总体而言,您可能会获得更好的结果,允许系统通过不使用以下调用和标准指定确切的位置提供者来为您完成一些工作。

    http://developer.android.com/reference/android/location/LocationManager.html#requestLocationUpdates(long, 浮点数, android.location.Criteria, android.location.LocationListener, android.os.Looper)

    【讨论】:

      【解决方案2】:

      在 Pork 的回答的基础上,如果您对更新频率很灵活,则可以在上面介绍的情况下(具有可变精度的样本)稍微减少方差。假设您将所需的频率定义为 0.1 hz(每 10 秒更新一次),然后您可以通过仅对过去 10 秒的样本集中的“最佳”位置进行操作来过滤您的位置更新。确定“最佳”的一种简单方法可能是从具有最高准确度等级的集合中返回样本。如果有多个具有相同准确度等级的样本,则返回最新的。您可以做的另一件事是将给定集合中的所有样本平均在一起,或者仅以相同的精度对所有样本进行平均。由于 GPS 误差的几何性质,这不会提高整体精度,但会减少方差;您将通过增加最小错误来减少最大错误。在设备移动的情况下,您还会引入一些滞后效应,这可能会或可能不会成为问题,具体取决于您的应用程序。

      【讨论】:

        【解决方案3】:

        在室内使用GPS基本不可能达到2-3m的精度。

        GPS 需要一条相当清晰的卫星站点线,因此您在室内越远,它获得的准确度就越低。

        为了确定您在室内的位置,Android 将尝试使用 GPS,然后使用周围 WIFI 接入点的已知位置进行三角测量,然后进行手机信号塔三角测量。它可能会结合这 3 个来提供更准确的猜测。

        要真正准确地确定室内位置,您需要在 Google 已知的位置拥有大量 WIFI 接入点。我很确定他们的室内购物中心导航就是这样。

        您可以用来提高准确性(或排除不准确读数)的其他技巧可能是从加速度计(或陀螺仪等)读取数据,并使用这些读数来尝试确定设备何时不移动,或者它向某个方向移动的速率。任何使用这些技术的东西都可能很难实现。

        【讨论】:

        • 我在户外能达到多少准确度?
        • 户外的精度实际上取决于您所处的景观类型。在平坦的乡村,您可以达到大约 1m 的精度,在拥有大型摩天大楼的城市中心,精度可以降至 50m 左右.
        猜你喜欢
        • 2012-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-21
        • 1970-01-01
        • 1970-01-01
        • 2014-05-06
        • 2012-09-14
        相关资源
        最近更新 更多