2014-01-26 2 views
0

Я пытаюсь написать приложение, которое показывает координаты GPS при нажатии кнопки.Как заставить Android перечитать позицию GPS?

@Override 
public void onClick(View arg0) { 
    EditText editText; 
    editText = (EditText) findViewById(R.id.editText1); 
    LocationManager locationManager; 
    locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
    Location location = locationManager.getLastKnownLocation("gps"); 
    editText.setText(location.toString()); 
} 

Проблема: в то время как в первый раз я получил координаты местоположения со временем чтения GPS, второй щелчок получает то же местоположение. Даже когда я останавливаю программу и снова запускаю ее, она получает то же место! Как обеспечить обновление чтения GPS?

+0

Вы пытались помещать диспетчер местоположений в функцию его и возвращать его каждый раз при нажатии? – Howli

ответ

1

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

Это не удивительно.

Даже когда я останавливаю программу и запускаю ее снова, она получает то же место!

Это тоже неудивительно.

Как обеспечить обновление для чтения GPS?

Вообще-то, вы этого не делаете. Нет необходимости, чтобы устройство обновлялось только потому, что вы запрашиваете последнее известное местоположение. Физически невозможно обеспечить новое исправление местоположения. И, если вы не звоните requestLocationUpdates(), это очень возможно для getLastKnownLocation(), чтобы просто вернуть null.

Ваши параметры на requestLocationUpdates() могут оказать определенное влияние на то, насколько агрессивно устройство пытается обновить GPS, а не экономить электроэнергию. Однако никаких гарантий нет.

0

Try, чтобы получить лучший поставщик, который доступен для извлечения данных о местоположении, используя этот код, прежде чем получить место

Criteria criteria = new Criteria(); 
String bestProvider = locationManager.getBestProvider(criteria, false); 

и в вашем getLastKnownLocation передать лучшее местоположение поставщика, чтобы получить место, как этот

Location location = locationManager.getLastKnownLocation(bestProvider); 
Смежные вопросы