使用LocationListener时,位置坐标不会更改

时间:2011-11-22 23:59:51

标签: android google-maps location

我在我的应用程序上使用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);

3 个答案:

答案 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