2013-07-09 11 views
6

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

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

Так что я спрашиваю; есть ли другая логика для получения местоположения от LocationManager, кроме как getLastKnownLocation? Я еще не нашел пример, который бы не выглядел примерно как

Location location = locationManager.getLastKnownLocation(provider); 

Thanx!

ответ

2

Вот пример кода из official guide (с небольшими изменениями):

// Acquire a reference to the system Location Manager 
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) { 
     makeUseOfNewLocation(location); 
    } 

    public void onStatusChanged(String provider, int status, Bundle extras) {} 
    public void onProviderEnabled(String provider) {} 
    public void onProviderDisabled(String provider) {} 
    }; 

// Register the listener with the Location Manager to receive location updates 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); 

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

+0

Это сделало это для меня! Конечно, в моем случае у меня нет или нужно место, пока оно не будет _changes_. Если я вызову свой следующий метод из 'onLocationChanged', мне даже не нужно слушать GPS-исправление. Thanx! – dhafnar

+0

Я сделал тот же код .. но onLocationChanged() никогда не был вызван. Я не знаю, в чем проблема –

2

Вы можете использовать LocationListener, а затем позвонить locationManager.requestLocationUpdates(), передавая собственную реализацию слушателя.

1

Google выпустил новый Location API, проверить эту ссылку из https://developer.android.com/training/location/index.html,

для вас вопрос, необходимо реализовать расположение обратного вызова для обновления, чтобы получить текущее местоположение. https://developer.android.com/training/location/receive-location-updates.html

+0

Я протестировал новый API Location, вам больше не нужно указывать провайдера местоположений для получения обновлений местоположения. LocationClient сделает это для вас, чтобы получить обновления местоположения (например, в iOS). В новом API вам просто нужно использовать LocationRequest для установки параметров службы, таких как интервал обновления, точность определения местоположения. Затем пусть LocaitonClient будет получать обновления местоположения. – pkliang

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