Android 为一个固定位置获取不同的纬度和经度

Android 为一个固定位置获取不同的纬度和经度,android,gps,latitude-longitude,Android,Gps,Latitude Longitude,我创建了一个android应用程序,每2秒获取一次位置的纬度和经度。该应用程序运行良好,但当我将我的android设备固定在一个位置时,我会得到不同的纬度和经度。。。令人惊讶的是,即使所有这些不同的坐标指向同一个位置,即使它们是不同的 例如,对于一个恒定的位置 我越来越 Latitude - 10.013499 Longitude - 76.3303451 2秒后 Latitude - 10.0135014 Longitude - 76.330346

我创建了一个android应用程序,每2秒获取一次位置的纬度和经度。该应用程序运行良好,但当我将我的android设备固定在一个位置时,我会得到不同的纬度和经度。。。令人惊讶的是,即使所有这些不同的坐标指向同一个位置,即使它们是不同的

例如,对于一个恒定的位置

我越来越

Latitude  -     10.013499  
Longitude -     76.3303451
2秒后

Latitude  -     10.0135014  
Longitude -     76.3303467
2秒后

Latitude  -     10.0135001
Longitude -     76.3303451
Latitude  -     10.0135011  
Longitude -     76.3303466
2秒后

Latitude  -     10.0135001
Longitude -     76.3303451
Latitude  -     10.0135011  
Longitude -     76.3303466
谁能告诉我为什么我会变成这样 如何获得给定点的唯一纬度和经度。
我的代码如下

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class AndroidGPSTrackingActivity extends Activity {

    Button btnShowLocation, stop;
    double latitude, longitude;
    int is = 0;
    ScheduledExecutorService scheduler;
    // GPSTracker class
    GPSTracker gps;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btnShowLocation = (Button) findViewById(R.id.btnShowLocation);
        stop = (Button) findViewById(R.id.stop);
        // show location button click event
        btnShowLocation.setOnClickListener(new View.OnClickListener() {

            public void onClick(View arg0) {
                // create class object
                scheduler = Executors.newSingleThreadScheduledExecutor();
                scheduler.scheduleAtFixedRate(new Runnable() {

                    public void run() {
                        System.out.println("sss");
                        // Log.i("hello", "world");
                        is++;
                        Log.i("hello", "" + is);
                        runOnUiThread(new Runnable() {

                            public void run() {
                                gps = new GPSTracker(
                                        AndroidGPSTrackingActivity.this);
                                latitude = gps.getLatitude();
                                longitude = gps.getLongitude();
                                Toast.makeText(
                                        getApplicationContext(),
                                        "Your Location is - \nLat: " + latitude
                                                + "\nLong: " + longitude,
                                        Toast.LENGTH_SHORT).show();
                            }
                        });
                    }
                }, 2, 2, TimeUnit.SECONDS);
            }
        });
        stop.setOnClickListener(new View.OnClickListener() {

            public void onClick(View arg0) {
                scheduler.shutdown();
                onDestroy();
            }
        });
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Toast.makeText(this, "Service destroyed...", Toast.LENGTH_LONG).show();
    }

    public double getLatitude() {
        return latitude;
    }

    public void setLatitude(double latitude) {
        this.latitude = latitude;
    }

    public double getLongitude() {
        return longitude;
    }

    public void setLongitude(double longitude) {
        this.longitude = longitude;
    }
}

GPS不精确。使用普通手机中的硬件,它可以在任何时间相隔10米左右。因此,一行中的多个读数不会有相同的精确位置


网络提供商的情况更糟——它可能有高达1公里的误差。

坐标不指向同一位置,如果你放大到足够大,你会看到它们相差几米。

要在一个位置检测静止,您可以计算到最后一个位置的距离,并且只有当距离超过阈值时,才使用该位置,或者您可以使用GPS位置的速度属性。

这里有一个封闭的主题,如果我们使用GPS坐标在谷歌地图上实时跟踪车辆,它将提供大量有关GPS精度的信息。……我们如何知道车辆是否处于停止位置,简单回答-我们实际上没有:)使用gps坐标,我们只能以适当的精度近似位置。你计算过这些纬度/长度之间的距离吗?如果您正在跟踪车辆,几秒钟内,横向/纵向的差异可能至少超过几米。事实上,我正在使用这些gps坐标来跟踪车辆……因此,我们如何知道车辆是否停止……例如,如果我们在一定时间内获得给定点的相同纬度和经度……我们可以说车辆已停止……祝您好运。我刚刚花了几个星期的时间为我写的一个应用程序调整了这种类型的算法(你可以通过我的网站找到),你永远不会得到100%的答案。你最多只能想出一个启发式的方法。但是,是的,你必须设置速度阈值。然后,如果你加上一个事实,那就是这个家伙可以把手机放在口袋里离开汽车,而且他还可以继续移动。或者停在车流中,几分钟都不动……先生,计算两个坐标之间的距离如何……通过这一点,我们可以发现那个家伙是在恒定还是在移动……我可以提供帮助。位置对象具有距离函数。它将以米为单位计算出各点之间的距离。因此,这是一个解决方案,用于确定带设备的人是否在某一点保持不变而没有任何移动……例如,带设备的人在车内某个位置停下来并在那里停留一段时间,您可以使用两种解决方案:到最后一个良好位置的距离,或速度