Начальная стратегия определения местоположения

Я периодически получаю обновления местоположения через GPS, проблема в том, что время до первого обновления местоположения происходит - это слишком долго. Когда пользователь находится внутри здания, это время становится еще хуже.

Поэтому я ищу несколько стратегий, чтобы уменьшить время запуска (на данный момент я не использую getLastKnownLocation , но буду). Я начал читать Глубокое погружение в локацию , чтобы получить некоторые идеи и некоторые мысли, которые я хотел бы обсудить с вами.

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

Вот мой первый вопрос: я ожидал, что сетевое местоположение будет доступно немедленно, поэтому я бы запросил новое сетевое местоположение, тогда я получил бы getLastKnownLocation от поставщика GPS, и если последнее GPS-местоположение находится внутри круга, образованного точками местоположения на основе точечной сети и точностью радиуса, тогда я бы взял местоположение GPS, независимо от того, сколько ему лет. Как вы думаете?

После проверки последнего известного местоположения я начну отслеживание местоположения по GPS, и, поскольку оно мне нужно только каждые 2 секунды и изменение на 10 метров, я бы использовал lm.requestLocationUpdates (LocationManager .GPS_PROVIDER, 2 * 1000, 10, это);

Однако я нашел закономерность (внутри презентации Быть Epic: Лучшие практики для разработки под Android на слайде 95 и 96 , что сначала он включает грубые и точные местоположения (с 0,0 для изменения времени и расстояния), а затем, когда получено первое событие, он переключается на действительно необходимую частоту обновления. -update выполняется быстрее, если интервал установлен на 0?

В отличие от этого шаблона, я бы держал грубое обновление до получения первого обновления GPS. Как вы думаете?

Надеюсь получить несколько интересных ответов!

---------------- Обновление ----------------

Я провел небольшое расследование: я включил GPS и подождал исправить. Затем я выключил GPS и проехал 50 км (31 милю). Затем я использовал код из A Deep Dive Into Location , чтобы получить все getLastKnownLocation . Я пробовал дважды , первый с выключенным GPS и второй с GPS Turnne d включен, но без исправления:

1) с выключенным GPS я получил
- Провайдер: сеть, точное местоположение с точностью 680 м
- Провайдер: пассивный ( mProvider = network), то же местоположение, что и выше, то же время, что и выше
- Provider: gps, location null

Итак, я узнал, что когда gps отключен, вы не получите getLastKnownLocation .

2) при включенном GPS я получил
- Поставщик: сеть, точное местоположение с точностью 652 м
- Поставщик: пассивный (mProvider = сеть), то же местоположение, что и выше, то же время, что и выше
- Провайдер: GPS, местоположение, как было на 2 часа раньше с точностью 12 минут, время было также на 2 часа раньше

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

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

10
задан ChrLipp 13 October 2011 в 09:54
поделиться