我在相同位置获得不同的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
请有人提出如何解决我的问题的建议。
先谢谢你。
答案 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>