Насколько надежна LocationManager getLastKnownLocation и как часто она обновляется?

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

locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER)

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

EDIT:

Я делал немного больше исследований, и я думаю, что вопрос, который я действительно пытался задать здесь, заключался в том, что операционная система Android или сам телефон обновит последнее известное местоположение для сетевого провайдера, поскольку телефон заблокирован на разных сотовые телефоны или Wi-Fi сети. Ответ - нет. После принудительной остановки всех приложений на моем телефоне, которые я знаю для взаимодействия с службами определения местоположения, последнее известное местоположение перестало обновляться. Итак, я предполагаю, что в наши дни есть вероятность, что большинство телефонов будут иметь некоторые службы определения местоположения, работающие в фоновом режиме, обновляющие последнее известное местоположение, но сам телефон этого не сделает. Поэтому я думаю, что я собираюсь с некоторой формой запроса обновлений местоположения, если последнее известное местоположение слишком старое.

Ответ 1

getLastKnownLocation() возвращает только последнее исправление. Поэтому, если ни один провайдер местоположения не обновляется, возвращаемое значение getLastKnownLocation() не изменится. Объект местоположения также предоставит вам точность и время исправления.

Я бы посмотрел на это сообщение для получения дополнительной информации. Вы можете использовать некоторую версию местоположения с одним выстрелом.

http://android-developers.blogspot.com/2011/06/deep-dive-into-location.html

Ответ 2

Frohnzie правильно относится к getLastKnownLocation. Получение местоположения - дорогостоящая операция, поэтому это происходит только тогда, когда приложение запрашивает его. Я часто проезжал 30 миль или около того, открыл приложение на четвереньках на моем телефоне, и это показало мне, что Венера находится в 30 милях отсюда. Очевидно, что они использовали getLastKnownLocation.

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