Как решить, какой интервал использовать для requestLocationUpdates?

LocationManager#requestLocationUpdates позволяет передавать параметр minTime и minDistance. Мне трудно решить, какими должны быть эти цифры, и я мог бы оценить некоторые рекомендации.

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

Я полагаю, что многие люди находятся в том же положении неопределенных требований: "я не хочу, чтобы данные были слишком устаревшими, но я не хочу тратить батарею."Как я могу превратить эти расплывчатые требования в конкретные цифры?

4 ответов


***<Edit>***
As of JellyBean, the criteria is (minTime & minDistance), so it has 
to satisfy both to return a location.
***</Edit>***

основываясь на вашей проблеме, мне кажется, что параметр minTime не имеет значения.

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

Если человек едет 60 миль в час, они движутся около 27 метров в секунду.

учитывая это critera... Я бы сказал использовать:

minTime = 60000 // обновление каждые 60 секунд
minDistance = 90 / / в быстром движении транспортного средства, он будет обновляться примерно раз в 3 секунды


Это было хорошо описано в requestLocationUpdates docs

частота уведомления или новых положения могут быть проконтролированы используя параметры minTime и minDistance. Если minTime больше, чем 0, LocationManager потенциально остальное для minTime миллисекунд между обновления местоположения для экономии энергии. Если minDistance больше 0, a местоположение будет транслироваться только если прибор двигает метрами minDistance. К получать уведомления так часто, как можно установить оба параметра в 0. Справочные службы должны быть осторожны о достаточно высокой minTime, чтобы устройство не потребляют слишком много энергии, сохраняя GPS или радиосигналов на все время. В частности, значения 60000ms не рекомендуется.


Я могу предложить лучшую идею, что изначально запрашивать обновления с немного большим интервалом и получать местоположения. Теперь проверьте, если расстояние между последовательными местоположениями больше минимального расстояния, чтобы различить более близкие местоположения, измените интервал обновления запроса на меньшее значение. Аналогично, если в этом Нижнем интервале расстояние, вычисленное вами, намного меньше, что указывает на пользователя, не путешествующего через транспортное средство, тогда обновите интервал до большего значения. Для обновления интервал необходимо отменить регистрацию предыдущего прослушивателя, а затем повторно зарегистрировать новое значение.


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