我正在开发基于GPS位置导航的android应用,以查找用户当前位置。我正在使用GPS_PROVIDER,我现在不想使用任何其他提供程序,例如PASSIVE_PROVIDER或NETWORK_PROVIDER,但是我的代码正在运行,并且可以准确地给我提供坐标,但是当我退出应用程序并再次启动应用程序时,它给我的坐标与旧的坐标稍有不同我在相同的位置和相同的位置。
为了找到GPS坐标,我使用了以下代码。
LocationManager mlocManager = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
MyLocationListener mlocListener = new MyLocationListener();
mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,
0, mlocListener);
我的侦听器类是
public class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location loc) {
loc.getLatitude();
loc.getLongitude();
String Text = "My current location is: " + "Latitud = "
+ loc.getLatitude() + "Longitud = " + loc.getLongitude();
TextView txtgps = (TextView) findViewById(R.id.text_GPS_Coordinates);
txtgps.setText(Text);
Toast.makeText(getApplicationContext(), Text, Toast.LENGTH_SHORT)
.show();
}
@Override
public void onProviderDisabled(String provider) {
Toast.makeText(getApplicationContext(), "Disable",
Toast.LENGTH_SHORT).show();
}
@Override
public void onProviderEnabled(String provider) {
Toast.makeText(getApplicationContext(), "Enable",
Toast.LENGTH_SHORT).show();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {}
}
我在AndroidManifest中定义的权限是:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
请告诉我给我准确,可靠的坐标的方法,如果可能,请解释您的代码。
最佳答案
您可能希望最新的位置修复是最准确的。但是,由于位置定位的准确性各不相同,所以最新的定位并不总是最好的。您应包括根据多个条件选择位置定位的逻辑。标准还取决于应用程序和现场测试的用例。
您可以采取一些步骤来验证位置定位的准确性:
检查检索到的位置是否比以前的估计新得多。
检查该位置要求的精度是好于还是差于先前的估计。
检查新位置来自哪个提供商,并确定您是否更信任它。
除此之外,您的GPS可能会为您提供wifi或tower的最后缓存位置。这是一个已知的错误,要解决此问题,您可以编写自定义算法来忽略此错误。
关于android - 如何在Android中使用GPS_PROVIDER获取当前准确的GPS坐标?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14499771/