Координаты местоположения не изменяются при использовании LocationListener - PullRequest
1 голос
/ 23 ноября 2011

Я использую LocationListener в моем приложении.Однако всякий раз, когда изменяется мое местоположение или выполняется метод onLocationChanged (Location location), координаты моего местоположения не меняются вообще.Я еду в машине и уже прошел несколько метров до километров, не меняя своего местоположения.В чем может быть проблема?

Мой код:

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 ]

5 голосов
/ 23 ноября 2011

Попробуйте это

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, 
        locationListener); 

Возможно, вы используете поставщика сети.Слушатель обычно удаляется в активном состоянии на паузе.И вы можете установить прослушиватель в событии onResume действия.

Я не уверен, какова логика поиска лучшего провайдера на Android.Но GPS всегда считается наиболее точным по сравнению с сетевым провайдером.Но есть условия, когда получить блокировку местоположения по GPS невозможно.Это когда сетевой провайдер вступает в эксплуатацию.

Обычно я создаю простой класс, который вызывает функцию для получения координат местоположения.Внутри функции я сначала запрашиваю местоположение с помощью GPS.Я жду местоположения в течение 30 секунд, если оно не получено, я запрашиваю его с помощью сетевого провайдера.Таким образом, я всегда могу убедиться, что я получаю значение GPS в качестве моего первого предпочтения.

1 голос
/ 04 сентября 2012

Я предполагаю, что ваше местоположение меняется, но вы пропускаете десятичную часть широты и долготы.Обратите внимание на последние цифры десятичной части до и после изменения местоположения.

0 голосов
/ 23 ноября 2011

Попробуйте это в своем коде

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...