我在我的应用程序上使用LocationListener。但是,每当我的位置更改或onLocationChanged(位置位置)方法执行时,我的位置的坐标根本不会改变。我骑在一辆车内,已经行驶了几米到几公里,而且我的位置没有改变。可能是什么问题?
我的代码:
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
String bestProvider = locationManager.getBestProvider(new Criteria(), true);
{LocationListener locationListener = new LocationListener()
{
public void onLocationChanged(Location location)
{
//location.getLatitude(), location.getLongtitude()
//location coordinates does not change at all everytime onLocationChanged is called even after I already move several meters or kilometers.
}
//...
}
locationManager.requestLocationUpdates(bestProvider, 0, 0, locationListener);
答案 0 :(得分:5)
试试这个
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
locationListener);
您可能正在使用网络提供商。通常在激活onPause中删除侦听器。您可以在活动的onResume事件中设置侦听器。
我不确定通过android找到最佳提供商背后的逻辑是什么。但与网络提供商相比,GPS始终被认为是最准确的。但是有些情况下无法通过GPS获取位置锁定。那是网络提供商投入使用的时候。
我通常创建一个简单的类来调用函数来获取位置坐标。在功能内部,我首先使用GPS请求位置。我等待30秒的位置,如果没有收到,那么我使用网络提供商请求它。通过这种方式,我可以始终确保将GPS值作为我的首选。
答案 1 :(得分:1)
我的猜测是你的位置在变化,但你忽略了纬度和经度的小数部分。请注意位置更改前后小数部分的最后几位。
答案 2 :(得分:0)
在代码中尝试这种方式
if(isInternetEnabled==true)//check for internet connection here
{
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
locationListener);
}
else
{
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0,
locationListener);
}
因为我发现GPS_PROVIDER
没有快速响应位置更新,所以NETWORK_PROVIDER
。