Android как узнать свои координаты

Полный список

— получаем данные о местоположении

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

Реализация этого всего вполне проста. Мы вешаем слушателя на провайдера и получаем данные. На данный момент есть два провайдера: GPS и Network.

GPS – тут все понятно, это данные с GPS-спутников.

Network – это координаты, которые можно получить через сотовую связь или WiFi. Для этого провайдера нужен инет.

Напишем простое приложение, которое будет запрашивать и отображать координаты.

Project name: P1381_Location
Build Target: Android 2.3.3
Application name: Location
Package name: ru.startandroid.develop.p1381location
Create Activity: MainActivity

В strings.xml добавим строки:

Несколько TextView, в которые мы будем выводить данные, и кнопка для открытия настроек местоположения.

В onCreate определяем TextView-компоненты и получаем LocationManager, через который и будем работать.

В onResume вешаем слушателя с помощью метода requestLocationUpdates. На вход передаем:

— тип провайдера: GPS_PROVIDER или NETWORK_PROVIDER
— минимальное время (в миллисекундах) между получением данных. Я укажу здесь 10 секунд, мне этого вполне хватит. Если хотите получать координаты без задержек – передавайте 0. Но учитывайте, что это только минимальное время. Реальное ожидание может быть дольше.
— минимальное расстояние (в метрах). Т.е. если ваше местоположение изменилось на указанное кол-во метров, то вам придут новые координаты.
— слушатель, объект locationListener, который рассмотрим ниже

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

В onPause отключаем слушателя методом removeUpdates.

locationListener – слушатель, реализует интерфейс LocationListener с методами:

onLocationChanged – новые данные о местоположении, объект Location. Здесь мы вызываем свой метод showLocation, который на экране отобразит данные о местоположении.

onProviderDisabled – указанный провайдер был отключен юзером. В этом методе вызываем свой метод checkEnabled, который на экране обновит текущие статусы провайдеров.

onProviderEnabled – указанный провайдер был включен юзером. Тут также вызываем checkEnabled. Далее методом getLastKnownLocation (он может вернуть null) запрашиваем последнее доступное местоположение от включенного провайдера и отображаем его. Оно может быть вполне актуальным, если вы до этого использовали какое-либо приложение с определением местоположения.

onStatusChanged – изменился статус указанного провайдера. В поле status могут быть значения OUT_OF_SERVICE (данные будут недоступны долгое время), TEMPORARILY_UNAVAILABLE (данные временно недоступны), AVAILABLE (все ок, данные доступны). В этом методе мы просто выводим новый статус на экран.

Провайдеры включаются и отключаются в настройках системы. Тем самым, просто определяется доступен ли провайдер для получения от него координат. Чуть позже увидим, как можно отправить юзера в эти настройки. Программное включение/выключение провайдеров через стандартные методы недоступно.

Читайте также:  Autodesk sketchbook android 4pda

Далее идут свои методы.

showLocation на вход берет Location, определяет его провайдера методом getProvider и отображает координаты в соответствующем текстовом поле.

formatLocation на вход берет Location, читает из него данные и форматирует из них строку. Какие данные он берет: getLatitude – широта, getLongitude – долгота, getTime – время определения.

checkEnabled определяет включены или выключены провайдеры методом isProviderEnabled и отображает эту инфу на экране.

Метод onClickLocationSettings срабатывает по нажатию кнопки Location settings и открывает настройки, чтобы пользователь мог включить или выключить провайдер. Для этого используется Intent с action = ACTION_LOCATION_SOURCE_SETTINGS.

Осталось в манифесте прописать разрешение на определение координат — ACCESS_FINE_LOCATION, которое позволит нам использовать и Network и GPS. Также существует разрешение ACCESS_COARSE_LOCATION, но оно дает доступ только к Network-провайдеру.

С кодом все, давайте смотреть, что получилось. Все сохраняем и запускаем приложение.

У меня на планшете сейчас выключен GPS, выключен WiFi, вставлена симка и выключен мобильный интернет.

Запускаю приложение и вижу такую картину:

GPS выключен, Network включен. Но инета нет, поэтому Network мне ничего не дает. Надо включить либо мобильный инет, либо WiFi.

Я включаю WiFi. Проходит секунд 15-20 и инфа с Network пошла

Видим широту, долготу и время.

Напомню, что мы ставили минимальную скорость обновления – 10 сек. Но у меня провайдер Network выдает данные не чаще, чем раз в минуту.

Теперь давайте включим GPS. Для этого мы специально повесили кнопку Location settings, которую надо будет нажать пользователю, чтобы перейти в настройки. Жмем кнопку.

Видим, что GPS выключен, а Network включен. Наше приложение показывало все верно.

Разумеется, GPS можно включать и выключать через быстрые настройки системы (справа сверху). Но не все пользователи об этом знают. А тут мы их точно направим.

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

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

В итоге сигнал пойман и получен результат.

У GPS через какое-то время включился статус 2 (AVAILABLE).

А у Network тишина со статусом. Не знаю, нормально это или нет.

Если с GPS сигналом все ок, то каждые 10 сек вы будете получать инфу о вашем местоположении. Если убрать планшет от окна, получим плохой сигнал: данные могут приходить реже и статус у меня иногда меняется на 1 (TEMPORARILY_UNAVAILABLE).

Прочее

Есть еще третий тип провайдера — PASSIVE_PROVIDER. Сам по себе этот провайдер никакие данные не вернет. Но повесив на него слушателя, вы сможете получать данные о местоположении, когда кто-то еще в системе пытается определить местоположение через обычные провайдеры. Система будет дублировать результаты и вам.

Читайте также:  Портативный термопринтер для android

Метод getAllProviders вернет вам список всех доступных провайдеров. Метод getProviders(boolean enabledOnly) вернет либо все, либо только включенные.

Объект Location кроме координат, времени и провайдера имеет еще несколько атрибутов, которые могут прийти и пустыми:

getAccuracy – точность показания в метрах

getAltitude – высота над уровнем моря в метрах

getSpeed – скорость движения в м/с

getBearing – насколько я понял, это угол, на который текущая траектория движения отклоняется от траектории на север. Он же азимут.

Местоположение можно протестировать и через AVD эмулятор. Для этого надо в Eclipse открыть DDMS (Window > Open Perspective > DDMS) и выбрать вкладку Emulator Control. Внизу будет вкладка Manual, на которой есть поля для ввода координат и кнопка отправки.

На следующем уроке:

— создаем приложение с картой
— настраиваем карту и обрабатываем ее события
— программно меняем положение камеры

Присоединяйтесь к нам в Telegram:

— в канале StartAndroid публикуются ссылки на новые статьи с сайта startandroid.ru и интересные материалы с хабра, medium.com и т.п.

— в чатах решаем возникающие вопросы и проблемы по различным темам: Android, Kotlin, RxJava, Dagger, Тестирование

— ну и если просто хочется поговорить с коллегами по разработке, то есть чат Флудильня

— новый чат Performance для обсуждения проблем производительности и для ваших пожеланий по содержанию курса по этой теме

Источник

Android как узнать свои координаты

Дорогие пользователи смартфонов на Андроид!

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

Просто тут вы должны вспомнить, что в кармане у вас находится палочка-выручалочка в виде вашего любимого смартфона на ОС Андроид. А он предоставляет для решения поставленной выше задачи прекрасные возможности, потому что, как правило, снабжен системой определения координат по спутникам глобальной системы позиционирования GPS и иногда также и ГЛОНАСС.

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

1. Яндекс Карты

Если у вас не установлено это приложение, срочно установите . Очень полезное приложение. Далее в описанной выше ситуации последовательность действий такая.

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

Кликаете по этой метке, появляется ее название. Еще раз кликаете по нему и получаете еще один экран.

Читайте также:  Андроид смартфоны 2010 года

Внизу видите значок Поделиться. Кликаете по нему и получаете меню, где можно выбрать отправку по email, по SMS или выбрать Еще

Если выбрать SMS, то в SMS текст с координатами уже введен, остается только добавить получателя и отправить. А если выбрать Еще…, то откроется масса дополнительных возможностей для отправки координат, в том числе через известные мессенджеры (Skype, Viber, WhatsApp) и даже социальные сети.

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

2. GPS Test

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

Но с его помощью также легко передать ваши текущие координаты другу. Для этого с помощью левой софт-клавиши открываете Меню, находите пункт Share и далее получаете экран, аналогичный уже приведенному чуть выше экрану с массой возможностей для передачи информации о координатах.

Дальше вы уже все знаете. Оказывается, все очень просто.

3. Мессенджеры WhatsApp и Viber

Если у вас установлен один из этих замечательных мессенджеров, то дело совсем простое. Потому что в них встроена возможность передачи в чате с другом не только картинок, фото, видео или контактов, но и голосовых сообщений и, специально для нашего случая – информации о местоположении. Причем последнее делается буквально в три клика.

Например, в случае WhatsApp, в чате с нужным адресатом нажимаем скрепочку вверху экранаViber – плюсик внизу), выбираем Местоположение, программа определяет его и выводит карту. Далее нажимаете Отправьте свое местоположение. И все!

Удачи вам, до новых встреч на страницах сайта.

Источник

Как найти координаты широты и долготы с помощью Google Карт для Android

Как один из самых мощных инструментов для картографии, Google Карты имеют ряд функций, призванных помочь Вам точно определить свое местоположение. Если Вы хотите знать свое точное местоположение, Вы можете найти свои координаты GPS в Google Картах.

Как найти координаты широты и долготы с помощью Google Карт для Android

Чтобы найти координаты GPS, откройте приложение Google Карты на смартфоне или планшете. Вы можете использовать строку поиска, чтобы найти свое местоположение, или использовать вид карты, чтобы найти его вручную.

Если Вы используете режим просмотра карты, Вам нужно нажать и держать, чтобы выбрать место, пока не появится метка.

Координаты будут отображаться в строке поиска Google Карт для Android, когда Вы установите метку.

Нажатие на установленную метку вызовет информационное меню с адресом местоположения, а также с вариантами сохранения или поиска маршрута к местоположению.

Координаты местоположения будут указаны под адресом в нижней части меню.

Источник

Оцените статью