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

Я использую

myLocation = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

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

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

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

Любые идеи?

Ответ 1

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

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