Я периодически получаю обновления местоположения через GPS, проблема в том, что время до первого обновления местоположения происходит - оно просто длинное. Когда пользователь находится внутри здания, на этот раз становится еще хуже.
Поэтому я ищу некоторые стратегии для улучшения времени запуска (на данный момент я не использую getLastKnownLocation
, но я буду). Я начал читать Deep Dive Into Location, чтобы получить некоторые идеи и подумать, что я хочу обсудить с вами.
Сначала упомянутое выше сообщение в блоге проходит через каждого поставщика местоположения на устройстве и запросы для getLastKnownLocation
, но учитывает их только тогда, когда они не являются старыми и с допустимой точностью.
Вот мой первый вопрос: я ожидал бы, что сетевое местоположение будет немедленно доступно, поэтому я бы запросил новое сетевое местоположение, затем я получил бы getLastKnownLocation
от GPS-провайдера, и если последнее GPS-местоположение находится внутри круга, образованного точками расположения точек и точностью радиуса, тогда я бы взял местоположение GPS, независимо от того, сколько ему лет. Как вы думаете?
После проверки последнего известного местоположения я запустил отслеживание местоположения GPS и, поскольку мне нужно только каждые 2 секунды и 10 м смены, я бы использовал
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2 * 1000, 10, this);
Однако я нашел шаблон (внутри презентации Быть Epic: Лучшие практики для разработки Android на слайде 95 и 96, что сначала он включает грубые и мелкие местоположения (с 0,0 для изменения времени и расстояния), а затем, когда первое событие полученный, он переключается на действительно необходимую частоту обновления. Итак, первое обновление gps происходит быстрее, когда интервал установлен на 0?
В противоположность этому шаблону я бы сохранил грубое обновление до тех пор, пока не будет получено первое обновление GPS. Как вы думаете?
Надеемся получить интересные ответы!
---------------- Update ----------------
Я провел несколько исследований: я включил GPS и стал ждать исправления. Затем я отключил GPS и проехал 50 км (31 миля). Затем я использовал код Deep Dive Into Location, чтобы получить все getLastKnownLocation
. Я попробовал это дважды, сначала с выключенным GPS и вторым с включенным GPS, но без исправления:
1), когда GPS отключен, я получил
- Провайдер: сеть, правильное расположение с точностью 680m
- Провайдер: пассивный (mProvider = сеть), то же место, что и выше, в то же время, что и выше.
- Поставщик: gps, местоположение null
Итак, я узнал, что когда gps отключен, вы не получаете getLastKnownLocation
.
2) с включенным GPS я получил
- Поставщик: сеть, правильное расположение с точностью 652m
- Провайдер: пассивный (mProvider = сеть), то же место, что и выше, в то же время, что и выше.
- Провайдер: gps, местоположение, как было за 2 часа раньше с точностью 12 м, время было еще 2 часа раньше
Здесь я узнал, что старые сообщения не являются недействительными, даже очевидно, что они ошибаются.
В этом случае алгоритм работает отлично, потому что я переехал в то время, когда выключил GPS. Но что, если я войду в дом? В этом случае 2-й старый GPS-результат будет очень хорошим, даже если он устарел.