Сервис GPS в Android - PullRequest
       4

Сервис GPS в Android

3 голосов
/ 08 февраля 2011

У меня вопрос по сервисам в Android.Я хочу знать, каков наилучший подход для получения переменных местоположения из GPS.Я делаю приложение с геолокации, используя сервис, который реализует модуль GPS.И для получения местоположения я создаю переменную в классе static и открытый метод static, который будет вызываться извне класса, и это все.Чтобы получить позицию из GPS, который я только использовал в своих классах:

Location mLocation = ServiceGPS.getLocation ();Класс ServiceGPS имеет этот метод:

public static Location getLocation () {return mLocation;}

Я действительно не вижу смысла привязки к сервису в этом случае, так как мне просто нужно вызвать статический метод.Я также думал о создании базового класса или реализации LocationListener, но этот способ действительно прост, он работает и экономит написание кода.

Большое спасибо за вашу помощь и поделился своими знаниями со мной.

БР.Дэвид.

Ответы [ 2 ]

9 голосов
/ 08 февраля 2011

Вы не можете просто «получить» местоположение в Android, так как оно может происходить из разных мест (последнее известное местоположение, GPS-приемник, местоположение в сети Wi-Fi или мобильная сеть передачи данных), и что более важно, это может занять время, чтобы получить местоположение, или вы можете не получить его вообще (например, GPS присутствует, но нет сигнала, как в помещении).

Тот факт, что получение местоположения может занять некоторое время, означает, что вы ДОЛЖНЫ запустить поиск местоположения в отдельном потоке, если только ранее не было кэшированного местоположения. В противном случае ваше приложение будет заблокировано до тех пор, пока местоположение не будет получено (что может никогда не произойти, например, на устройстве без GPS или геолокационной сети).

Это ключевая страница, которую вам нужно прочитать, переварить и использовать: http://developer.android.com/guide/topics/location/obtaining-user-location.html Если вы новичок в геолокации в Android, используйте код примера для начала.

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

  • Никогда не предполагайте, что есть провайдеры местоположения. Устройство может не иметь сетевого подключения или GPS. Для обработки этих сценариев вам необходима обработка ошибок в коде.
  • Всегда используйте потоки для гео-поиска, чтобы приложение реагировало
  • Попробуйте использовать последнее известное местоположение Android, если это возможно, он обеспечивает быструю блокировку. Вы можете обновить местоположение на заднем плане до более точного.
  • Если приложение может запускаться на устройствах, которые не могут определять географическое местоположение (например, более дешевые планшеты, Google TV и т. Д.), Сохраните местоположение в настройках, чтобы пользователь указывал его один раз, и оно будет использовать его при каждой загрузке приложения (если оно не могу найти новое местоположение)
  • Часто имеет смысл создать класс специально для управления получением местоположений, многопоточностью и т. Д. Тогда другие классы в вашем приложении могут просто вызывать статический метод, как вы предлагаете, но проблема заключается в коде, который вы используете для получения значения в вашу переменную mLocation!
  • Возможно, вы вообще не получите местоположение - не думайте, что у вас это получится, устройства и контексты различаются.
  • Если вы НЕ ДОЛЖНЫ иметь очень точное местоположение, всегда используйте также поставщиков сетевых расположений, поскольку они часто бывают очень быстрыми. Поиск GPS-местоположения из свежих может быть очень медленным, и пользователи будут скучать и разочаровываться. Карты Google кажутся довольно быстрыми, но на самом деле они кешируют довольно мало информации, и вы увидите, что иногда найти новое местоположение медленно.

Я рекомендую электронные книги Марка Мерфи на Android, у него отличный охват и примеры исходного кода для геолокации http://commonsware.com/

0 голосов
/ 11 февраля 2011

Я не просто получаю позицию ... Также я проверяю провайдера, вызывающего другой метод службы. И в зависимости от того, буду я выбрасывать исключение. Не будет проблемой, что я буду делать потом.Я благодарен тебе, Олли, за информацию.Но мой вопрос:

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

И на самом деле я запускаю свое Location в службе, и поэтомув другой теме, поэтому я не понимаю вашу точку зрения.Кажется, вопрос будет в том, как работает Location в Android?Ура Давид

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