2015-03-30 3 views
0


Я просто сделал приложение, которое показывает мои текущие координаты местоположения. Но если я изменю свое местоположение, тогда он показывает мои старые координаты местоположения. Опять же, если я перезагружу свое устройство, он отобразит правильные координаты.
Вот часть моего кода, где я получил мои координаты:Почему я получаю старые координаты местоположения в своем приложении для Android, пытаясь найти текущие координаты местоположения?

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,MIN_TIME_BWN_UPDATE,MIN_DIST_CHANGE_FOR_UPDATES,this); 

       if (locationManager != null){ 
        location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
       } 
       if (location != null){ 
        longitude = location.getLongitude(); 
        latitude = location.getLatitude(); 
       } 
+0

Сохраняется ли GPS при смене местоположения? – Apurva

ответ

0

Используйте onLocationChanged() обратного вызова вместо getLastKnownLocation(). Вот пример кода:

LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); 
    // Define a listener that responds to location updates 
LocationListener locationListener = new LocationListener() { 
     public void onLocationChanged(Location location) { 
      if (location != null){ 
       longitude = location.getLongitude(); 
       latitude = location.getLatitude(); 
      } 


     } 
    }; 

Как и когда регистр местоположения Слушатель?

Если вы хотите местоположения слушателя для отображения текущего местоположения на карте, то вы должны зарегистрировать Расположение Слушатель в OnCreate() или onResume() метод деятельности и отменить регистрацию приемника в OnPause() или OnStop() способ. Чтобы отменить регистрацию обновлений местоположения, вы можете использовать метод ниже.

locationManager.removeUpdates(locationListener) 

Также блокировка местоположения по GPS всегда невозможна, поэтому я предлагаю вам также использовать сетевой провайдер. Просто добавьте это утверждение.

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,MIN_TIME_BWN_UPDATE,MIN_DIST_CHANGE_FOR_UPDATES,locationListener); 

и сделать это изменение вашего заявления о регистрации GPS, поставив locationListener вместо это в качестве третьего аргумента locationManager.requestLocationUpdates();

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,MIN_TIME_BWN_UPDATE,MIN_DIST_CHANGE_FOR_UPDATES,locationListener); 
+0

Я все еще не понимаю, как реализовать LocationListener. Можете ли вы предоставить более подробную информацию. @Best_of_his_name – PPB

+0

Перейдите по [this] (https://sites.google.com/site/androidhowto/how-to-1/get-notified-when-location-changes) примеру. – Exception

+0

[this] (http://examples.javacodegeeks.com/android/core/location/android-location-based-services-example/) немного лучше, чем выше. У него почти полный код с правильным объяснением, какая часть поставить там, где – Exception

0

getLastKnownLocation() не подходят для получения точных результатов мгновенно, так как он работает, не дожидаясь GPS FIX - это просто дает вам место, который кэшируется системой (вы можете попробовать запустить другое местоположение с помощью приложения, например, Google Maps, а затем запустить его и местоположение будет новее).

Чтобы заставить его работать, как ожидалось, вы можете использовать onLocationChanged метод интерфейса LocationListener - попробуйте один объяснено здесь How to get current location in Android

0

Функция GPS берет свое время, чтобы определить ваше местоположение по запросу.

Пока вы меняете свое местоположение, вам нужно подождать, пока GPS не установит новое местоположение. До этого времени, LocationManager будет вернуть старое расположение в:

location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

В устройствах Samsung Galaxy, когда вы начинаете кнопку GPS (местоположение), значок начинает мигать в области STATUSBAR. Это означает, что GPS теперь ищет новое местоположение. Когда новое местоположение будет найдено, значок перестанет мигать и появится уведомление «Местоположение, установленное GPS» Технически вы получите обратный вызов onLocationChanged(). Для этого обратного вызова, вам нужно реализовать LocationListener

При перезагрузке устройства, GPS Досталось достаточно времени, чтобы установить новое место, так что дает вам правильное расположение

Смежные вопросы