Gps lat&长期随机显示非常不准确的结果

时间:2012-06-22 11:17:14

标签: java android gps

我正在听我的手机GPS并将经度和经度张贴到我的网络服务时间onLocationChanged被调用。我的问题是,在大约2%的帖子中,它显示了非常不准确的结果(几英里外)。在发布之前,我应该检查location对象的准确性吗?或者您还有其他建议吗?谢谢!

public void onLocationChanged(Location location) {
    locationManager.removeUpdates(networkLocationListener);

    textView.setText(textView.getText().toString() + "New GPS location: "
            + String.format("%9.6f", location.getLatitude()) + ", "
            + String.format("%9.6f", location.getLongitude()) + "\n");

    //float accuracy = location.getAccuracy(); check this value?

    postLocationToWebservice(location);
}

2 个答案:

答案 0 :(得分:1)

使用Android的位置服务时,这是一个非常常见的问题。您可以引入一些检查,以确保只有准确的位置发布到您的网络服务。

1.比较所有定位服务的准确性。

2.定义准确度的最低限度和时间的最大限制。(因为有时候获得的位置是准确的,但它是旧的。)

检查此代码段并进行必要的更改以完成您想要的操作。确保您创建了一个 用于检查算法准确性的日志构建。

List<String> matchingProviders = myLocation.lm.getAllProviders();
    for (String provider: matchingProviders) 
    {
        Location location = myLocation.lm.getLastKnownLocation(provider);
        if (location != null) {
            float accuracy = location.getAccuracy();
            long time = location.getTime();

            if ((time > minTime && accuracy < bestAccuracy)) {
                bestResult = location;
                bestAccuracy = accuracy;
                bestTime = time;
            }
            else if (time < minTime && bestAccuracy == Float.MAX_VALUE && time > bestTime) {
                bestResult = location;
                bestTime = time;
            }
        }
    }

答案 1 :(得分:0)

有可能NETWORK_PROVIDER代替GPS_PROVIDER

报告更新后的位置

您可以随时通过

获取最新更新的GPS位置
     mLocationMgr.getLastKnownLocation(LocationManager.GPS_PROVIDER);