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