Хорошо известно, что GPS-приемнику требуется некоторое время (около 10-12 секунд), чтобы зафиксировать спутники. Используя Android LocationListener, я хочу получать уведомления, когда начинаются обновления местоположения. Например:
У меня есть действие со следующим кодом для создания экземпляра и вызова LocationListener
public void startLocationUpdates() {
try{
Common.locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
listener = new LocListener();
if(Common.locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
Common.locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener);
} else if(Common.locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
Common.locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, listener);
}
}catch(Exception e) {
e.printStackTrace();
}
}
Вот реализация LocationListener onLocationChanged.
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
try{
Common.currentLocation = new String(String.valueOf(location.getLatitude()) + "," + String.valueOf(location.getLongitude()));
Log.i("LocListener",Common.currentLocation);
} catch(Exception e) {
e.printStackTrace();
}
}
Строка Common.currentLocation обновляется после запуска locationUpdates. Однако я хочу подождать в своей основной деятельности, пока это поле не будет обновлено.
Если я добавлю цикл while в свою активность, чтобы дождаться обновления поля Common.currentLocation, поток приостанавливается, а метод onLocationChanged не вызывается (сообщения журнала не печатаются).
Каков наилучший способ получить обновление от метода onLocationChanged к общему интерфейсу/действию, как только будет вызван onLocationChanged и станут доступны значения широты и долготы? Любая помощь будет оценена.