为什么我在NETWORK_PROVIDER的同一位置获得不同的Gps坐标?

时间:2012-08-25 08:23:07

标签: android gps

我在相同位置获得不同的Gps坐标,为什么会发生这种情况。但是我需要改变gps坐标才能在10米后移动。我怎么能这样做。

这是我的代码。

  private static final long MINIMUM_TIME_BETWEEN_UPDATES = 1000; 
            private  static final float MIN_GEOGRAPHIC_POOLING_DISTANCE = (float)10.0;


 double myLat_Values;
        double myLog_Vaues;


locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
 locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MINIMUM_TIME_BETWEEN_UPDATES, MIN_GEOGRAPHIC_POOLING_DISTANCE, new MyLocationListener());


private class MyLocationListener implements LocationListener {

        @Override
        public void onLocationChanged(Location location) {
            longitude_str = String.valueOf(location.getLongitude());
            latitude_str = String.valueOf(location.getLatitude());

             Double longitude_number = Double.valueOf(longitude_str);
                 DecimalFormat dec = new DecimalFormat("#.000000");
                longitude_message = dec.format(longitude_number);

             Double latitude_number = Double.valueOf(latitude_str);
             DecimalFormat decim = new DecimalFormat("#.000000");
                latitude_message = decim.format(latitude_number);

                try
                {
                    myLat_Values = Double.valueOf(latitude_message);  
                    myLog_Vaues = Double.valueOf(longitude_message);
                }
                catch(NullPointerException ex)
                {
                    myLat_Values = 0;
                    myLog_Vaues = 0;
                }

     System.out.println("GPS Values Clockout:"+myLat_Values+"-"+myLog_Vaues);

        }       

    public void onProviderDisabled(String s) {}
        @Override
        public void onProviderEnabled(String provider) {}
        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {}      
    }

我也将这些用于manifestfile:

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

我使用了这个link

请有人提出如何解决我的问题的建议。

先谢谢你。

1 个答案:

答案 0 :(得分:2)

当您使用NETWORK_PROVIDER时,它会根据您正在使用的网络服务提供商返回GPS坐标。但是当您使用GPS_PROVIDER时,它会根据卫星返回GPS坐标。

对于Accuracy Criteria,请添加以下代码

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_HIGH);  
locationManager.getBestProvider(criteria, true);

此外,您需要在AndroidManifest.xml中声明以下GPS权限

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