2010-01-13 6 views
10

Я используюAndroid: getLastKnownLocation устаревший - как заставить обновить местоположение?

myLocation = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

получить текущее местоположение на запуске моего приложения.

Как указано в документации на Android, это местоположение может быть «устаревшим», поскольку метод возвращает местоположение, когда GPS использовался в последний раз.

Как можно активно запрашивать текущее местоположение с помощью GPS? Я думал об использовании LocationListener, однако это может быть немного излишним, поскольку мне нужно только одно место (в начале моего приложения).

Любые идеи?

ответ

10

Ваша первоначальная интуиция верна - вам необходимо использовать LocationListener для запроса обновлений. Учитывая, что вам требуется только одна позиция, вы можете отменить регистрацию LocationListener после возвращения первого значения.

На практике, хотя, вероятно, разумно слушать немного дольше. Службы, основанные на местоположении (в частности, GPS), имеют тенденцию немного «подпрыгивать», когда они впервые получают исправление. Лучше всего прослушивать определенное количество времени или заданное количество обновлений или до тех пор, пока не будет достигнут определенный уровень точности (приемник местоположения вернет точность возвращаемой позиции).

+0

Muchas gracias Reto :-) – znq

+0

Предположим, что я уже включил GPS, а затем запустил приложение. Если я останусь в одном месте, то onLocationChanged() не будет вызван. В этом случае, как я могу убедиться, что возвращаемое значение getLastKnownLocation() не устарело? – flypen

+0

Вы также можете указать обновления, основанные на времени, посмотрите requestLocationUpdates –

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