С координатами gps: cтоковые фото, картинки, изображения по лицензии роялти-фри

Хотите просматривать GPS-координаты своих фотографий на iPhone? Если у вас включены службы геопозиции для приложения Камера, вы сможете легко это делать через какое-нибудь бесплатное приложение. Ниже мы научим вас просматривать GPS-координаты фотографий на iPhone.

image

Приложениядляпросмотраметаданных

В App Store есть огромное количество приложений для просмотра GPS-координат фотографий. Ниже представлены лучшие из них.

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

EXIF Viewer Lite

Открыв приложение EXIF Viewing Lite, вы увидите все свои фотографии. Вы можете выбрать нужное из общего списка или же найти его по Альбомам.

На превью фотографии будут её основные метаданные. Если коснуться фотографии, откроются все остальные данные, включая GPS-координаты в самом низу списка.

image

Exif Viewer

В Exif Viewer просматривать GPS-координаты ещё проще. Нажмите Open внизу экрана и выберите нужное фото.

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

Koredoko

Koredoko – ещё одно приложение, в котором легко просматривать GPS-координаты. Нажмите на три полоски в нижнем левом углу экрана, чтобы открыть список фотографий и выбрать нужную.

Когда вы выберите фотографию, то увидите её вместе с координатами прямо на карте.

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

Оцените пост Обзоры 22.02.2012 79900   Комментарии (22)

Простая геопривязка фотографий – сервис GeoCam

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

А нужно это по нескольким причинам. Во-первых, частенько это требуется мне самому – ну, знаете, сфотографируешь симпатичный ресторанчик, магазинчик, просто интересное место, а потом по фото натужно пытаешься вспомнить, где это все находится. Оно, конечно, ресторанчик-то можно отыскать по названию и городу (если суметь запомнить город, что после некоторых ресторанчиков не всегда удается), а вот в случае магазинчиков и мест без названия – это как-то совсем сложно.

Во-вторых, было бы очень полезно ставить координаты GPS на некоторые фотографии для репортажки в блоге. А то начинается: опубликуешь фотографию (да тех же ресторанчиков, которые я люблю изучать в плане духовного роста во время поездок), и начинается – какой адрес, какой городок, какая страна, какая планета, что за галактика…

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

Как решать все эти проблемы? Современные цифровые фото почти всегда снабжаются различными метаданными по стандарту EXIF: туда входят, например, название и модель камеры, дата и время съемки, выдержка, диафрагма и другие данные, среди которых, между прочим, также есть данные GPS. То есть географические координаты можно записывать прямо в изображение.

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

С коммуникаторами, конечно, проще – они почти все снабжаются модулем GPS, и некоторые из них (хотя, как ни странно, далеко не все) умеют осуществлять геотаггинг – то есть записывать координаты GPS в данные фотоснимков. 

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

Я поизучал данный вопрос, и выяснилось, что для устройств на Android и на iOS существует сервис, который достаточно эффективно решает задачу записи географических данных и угла обзора объектива в производимых снимках.

Называется этот сервис GeoCam. У него есть бесплатная и платная версии под Android (бесплатную скачать, платную скачать), а также бесплатная и платная версии под iPhone (бесплатную скачать, платную скачать).

Страница приложений GeoCam

Скачал версию под Android, установил (на Samsung Galaxy Note). Отправился тестировать.

Работает это все следующим образом. Запускаете приложение, появляется режим фотокамеры в следующем виде. На весь экран – изображение с камеры (в скриншот оно не попало) с углом обзора объектива. Слева сверху – кусок карты местности от Google Map. На верхней информационной панели – широта, долгота и точность определения. На нижней информационной панели – параметры угла обзора: азимут, наклон, крен.

Режим съемки

Нажимаете на “затвор” фотоаппарата – изображение сохраняется вместе со всеми координатами.

Если нажать на пиктограмму под пиктограммой “затвора”, вы увидите сделанный кадр со всеми данными. Снизу идет фото, сверху – кусок карты с углом обзора. Карту можно переключать между режимами спутник-схема.

Фото и карта в режиме спутника

Фото и карта в режиме схемы

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

Редактирование в режиме схемы

Редактирование в режиме спутника

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

Далее важно понять следующую вещь. 

Вся собранная с помощью GeoCam информация о географических координатах, азимуте, наклоне и крене камеры записывается непосредственно в EXIF изображения!

Данные GPS записываются в стандартизованное поле EXIF, и эти параметры оттуда может достать любая программа, понимающая EXIF, а дополнительные поля, которые GeoCam вписывает в EXIF (многие программы делают свои расширения стандартного EXIF – это вполне допускается), могут быть считаны как специальными приложениями GeoCam, так и любыми другими программами, создатели которых могут работать с этими данными с помощью доступного для скачивания расширения EXIF, принятого в GeoCam.

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

 Информация о файле с комментариями

Отправить (передать) фотографию можно непосредственно с коммуникатора.

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

По пункту отправить предлагаются вот такие возможности.

Варианты отправки

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

Передаваться будет только само изображение с зашитыми в EXIF соответствующими данными.

Отчет

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

Выглядит это примерно следующим образом (кликабельно).

Отчет по одной фотографии

Проекты и метки

Для удобства обработки сделанные геофото (фотографии, созданные с помощью данного сервиса) можно распределять по проектам, а также использовать специальные фильтры, которые относятся к определенным областям карты – конкретным улицам, городам, регионам.

Проекты

Фильтры

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

Проекты, кроме всего прочего, интересны тем, что там можно отобрать нужную группу геофото и вывести все точки съемки на одну карту.

Сначала отбираются нужные фото одного проекта. 

Фото одного проекта и меню

Отбор фото одного проекта

После этого нажимается кнопка “Посмотреть”, после чего на верхнем изображении GeoCam выводит на карте (схема или спутник) все точки съемки отобранных фото, между которыми можно переключаться. Карту, соответственно, можно масштабировать. 

Все точки съемки на схеме

Все точки съемки на спутнике

Сервис www.geo-photo.net

Для размещения в онлайне сделанных геофото существует специальный сервис www.geo-photo.net. Регистрация там бесплатная, и на этом сайте вы можете размещать свои геофото, разделяя их на проекты, при необходимости давая прямые ссылки для доступа всем заинтересованным лицам. 

Делается это все просто. Сначала вы регистрируетесь на сервисе (либо же просто логинитесь с помощью аккаунта в Twitter, Facebook или Google), после чего можете закачивать туда изображения прямо с вашего коммуникатора или с компьютера, куда геофото требуется предварительно перекачать.

В аккаунте фото распределяются по проектам, по каждой фотографии можно увидеть два изображения карт различных масштабов выбранных сервисов: Google, Bing, Osm, Yandex – при этом доступны варианты отображения этих сервисов. Вот пример по Google (кликабельно).

Мое геофото в Geo-Photo.net

Сервис GeoView под Windows

Для получения всех данных по геофото можно использовать и программу под Windows – она называется GeoView (ее можно скачать бесплатно). Программа работает почти так же, как и онлайновая версия: в нее закачиваются геофото (с коммуникатора) и вы можете получить одну-две карты от любого выбранного сервиса любого масштаба (кликабельно). 

GeoView

Приложение под iOS

Потестировал, как это все работает под iOS. Сначала проверил бесплатную версию. В принципе работает нормально – по крайней мере, координаты сохраняет в изображении плюс сохраняет все соответствующие данные об угле съемки. Однако видно, что основные усилия разработчиков все-таки направлены на версию под Android – она более функциональна и, как бы это сказать, более “вылизанная”. Впрочем, версией под iOS пользоваться можно, я целый день на ней делал геофото – все работало без особых проблем. 

Фото со схемой под iOS

Фото со спутником под iOS

Кстати, что странно, у меня как раз платная (Pro) версия сначала под iOS заработала с заметными глюками. Но потом я ее удалил и поставил заново – заработала нормально.  

Тонкости работы с сервисом

Некоторые пользователи, изучая работу с сервисом, задают вопрос из серии: “Ну, как же так, а если у нас там, за границей, нет Интернета, так что же – без него фото не сделать?” Сделать, конечно! Суть сервиса в том, что ваш коммуникатор с помощью GeoCam во время съемки проставляет на фото нужные координаты плюс азимут и другие данные (на ваше усмотрение). После этого фото можно отправлять друзьям, закачивать на свой компьютер, публиковать во всяких социальных сетях или на специальном сервисе www.geo-photo.net! Так как информация при съемке сохраняется непосредственно в самом файле, больше ничего делать не нужно и никакого Интернета при съемке не потребуется. Тут главное – установить приложение на ваш Android-телефон или iPhone, после чего координаты и угол съемки будут сохраняться автоматически, а где и в чем вы потом будете просматривать снятые изображения – это ваше дело.

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

Выводы

Сервис очень интересный и полезный. Я его потестировал где-то с неделю – был очень доволен. Что на андроидном телефоне, что на айфоне все работало так, как полагается, и я уже начал себе составлять отдельную коллекцию геофото, которые потом, отдельно от основной коллекции, можно будет использовать в качестве изображений с привязкой к местности.

Впрочем, есть и что покритиковать. Фотографии с зашитыми данными GPS – это отлично, однако многие пользователи тех же социальных сетей (да и просто моих читателей) понятия не имеют, как доставать подобную  информацию из публикуемых мною изображений. И это не их вина: моя задача – предоставлять удобную возможность получать подобные данные.

Что для этого нужно? Только и всего: чтобы с помощью GeoCam я мог готовить фотографию для отправки по почте или в социальные сети с наложенными прямо на изображение географическими координатами – это самый простой вариант.

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

Да, проблему наложения геокоординат на фотографии, снятые не коммуникатором, а фотокамерами, сервис практически не решает. (Можно, конечно, для фотоаппаратов, поддерживающих карточки Eye-Fi, использовать передачу по Wi-Fi кадров в коммуникатор с GeoCam с последующей привязкой к местности, но это слишком геморройно.)

Однако привязка, как правило, требуется не для художественных фотографий, сделанных зеркалкой или другим качественным фотоагрегатом, а для чисто репортажной съемки (из серии – вот тут мы живем, вот тут классный ресторанчик, вот шикарный вид на море, здесь каждый день сидит блондинка в бикини почти без бикини), для которой современных коммуникаторов (смартфонов) – просто выше крыши!

Так что теперь, дорогие читатели, когда я публикую фотографию чего-то интересного в своем блоге, не поленитесь заглянуть в EXIF (я эти данные традиционно почти никогда не стираю) – скорее всего, там будут интересующие вас координаты GPS, если кадр сделан на коммуникатор. И вот теперь можно мне не задавать лишние вопросы на тему того, что это за адрес, на какой улице, в какой стране, на каком континенте, какой планете или галактике. При условии, конечно, что это снято в одной у нас с вами вселенной.

Да вот – попробуйте сами!

Зимний пляж с яблоками на снегу

© 1998–2021 Alex Exler 22.02.2012 Ссылки по теме:

  • сайт разработчиков;
  • бесплатные приложения под Android и iOS;
  • платные приложения под Android и iOS;
  • приложение под Windows GeoView;
  • онлайновый сервис Geo-photo.net.

Сервисы НазадВперед Пожаловаться модератору Загружаю… НазадВперед Поиск e-mail Экслера – alex@exler.ru Темы обзоров Разное 249 Смартфоны 178 Ридеры 52 Планшеты 51 Наушники 43 Бытовая техника 39 Часы 37 Видеорегистраторы 30 Медиаплееры 27 Фотокамеры 26 Ноутбуки 17 Сервисы 15 Программы 15 Сетевые накопители 15 Компьютеры 13 Сетевое 12 Фитнес-браслеты 9 Аудиоустройства 8 Мониторы 6 Видеонаблюдение 4 Экшн-камеры 3 Аккумуляторы 2 Симкарты 1 Дроны 1 Презентации 1 Выставки 1 Информация О разделе Рейтинг RSS-лента Архив Мой список рекомендованных смартфонов Что ещё почитать Код 100 31.01.2019 Google Photos – как пользоваться и всякие хитрости 16.07.2020 Дьявол в деталях 22.03.2021

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

Сегодня мы рассмотрим пять приложений для поиска GPS-координат,  расскажем об их работе, преимуществах и платных функциях.

Первое из рассматриваемых нами приложений – GPS Coordinates. Один из самых простых и незатейливых навигаторов с интересными возможностями. 

Разработчики позволяют юзерам, скачавшим данную утилиту, загружать, делиться и сохранять координаты для того, чтобы использовать их в дальнейшем. Также предусмотрена стандартная функция нахождения координат пользователя по введённому адресу и изменения вида карты. Возможно отображение обычной карты-схемы и вид со спутника. 

Базовые функции функции приложения:

  • конвертация любого адреса в gps-координаты и наоборот (широта и долгота);
  • быстрая отправка координат в социальные сети или на email;
  • локальное сохранение и загрузка gps-координат на мобильное устройство.

В целом, GPS Coordinates представляет собой обычное приложения без наворотов. Оно будет полезно тем, кому нужны самые простые карты, чтобы не потеряться в незнакомом городе.

Утилита с картами, функционирующая на основе известной навигационной системы “Глонасс”. Имеет ряд полезных функций, о которых мы расскажем далее. 

Во-первых, что крайне положительно отличает его на фоне остальных GPS-навигаторов  – возможность сделать фотографию, привязав её к координатам на карте. Таким образом интуитивно и удобно отмечать важные координаты на карте. Можно сравнить эту функцию с приложением Инстаграм, где фото также привязывается к определенной локации. 

Ещё один безусловный плюс – возможность загрузки офлайн-карт и вычисление координат без подключения к интернету. Наравне с предыдущей функцией, “GPS/Glonass координаты” становится одним из наиболее предпочитаемых приложений в походах или длительных путешествиях вдали от цивилизации.

Однако не всё так радужно. Пользователи Play Market отмечают навязчивую интернет-рекламу при работе с приложением. Данная реклама очень долго грузится при слабой сети и не даёт узнать своё местоположение до её просмотра. От рекламы можно избавиться путём покупки полной версии приложения.

Ещё один простой и незатейливый навигатор. В отличии от GPS Coordinates, имеет более широкий функционал:

  • Определение координат указанной точки на карте в виде Latitude/Longitude
  • Копирование, публикация, печать и сохранение координат в социальных сетях
  • Преобразование координат в адрес и наоборот

На главном экране приложения имеются три раздела: “Мои координаты”, “Сохранённые локации” и “Настройки”. Первая кнопка отвечает за то, чтобы найти и показать на экране ваше текущее местоположение через спутник. Координаты, которыми вы будете пользоваться в дальнейшем, можно сохранить и перейти к их списку с помощью второй кнопки. Настройки позволят указать конкретную страну, город, адрес или почтовый индекс. 

Приложение My Location бесплатно, на экране отображается реклама. 

Главное отличие данного навигатора от предыдущих – наличие компаса. Это не является чем-то необычным, особенно учитывая тот факт, что на iPhone, например, компас является встроенным приложением. Однако использовать компас в приложении-навигаторе несомненно удобнее. В остальном, функционал приложения GPS & Maps стандартен. 

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

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

За дополнительную плату можно отмечать своё местоположение маркерами, а компас будет отображаться поверх карты в виде виджета. Также докупаются и другие виджеты: показатели скорости, координат и другое.

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

Кроме того, пользователи жалуются на то, что фотографии со спутника в некоторых областях давно устарели. Поэтому рекомендовать конкретно это приложение мы поостережёмся.

Скачать GPS & Maps на iOS

Приложение “GPS Formatter” бесплатно и обладает основным функционалом простейшего навигатора, как и предыдущие.  От рекламы можно избавиться приобретя подписку ($3 в месяц). 

Отличительной фишкой навигатора является возможность выбора из огромного количества форматов координат – например Georef или военная координатная сетка системы МГРС. 

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

Ещё один бонус для владельцев техники Apple – поддержка умных часов Apple Watch с выводом текущих координат пользователя на дисплей. 

Встроенный в приложение калькулятор помогает вычислять значения геомагнитного поля: декларацию, напряжённость и другие. 

Единственным минусом можно назвать громоздкий пользовательский интерфейс.

Мы считаем, что данное приложение является одним из лучших в категории GPS-навигаторов за счёт своего действительно широкого и интересного набора функций, бесплатности и невысокой цены за избавление от рекламы.

Скачать GPS Formatter на iOS

Пожалуйста, оцените статью: 

фиктивное местоположение GPS

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

Вы должны были заметить, что сайты и приложения ведут себе по-разному в разных местоположениях. Вспомнить о многих приложениях и сервисах, которые, например, не работают, если вы находитесь за пределами России или игре Pokemon GO. Но есть способ обмануть систему…

Многие из вас знают, Андроид довольно универсален. Например, можно подделать местоположение GPS. Главное, что эта функция доступна практически на любом современном смартфоне Андроид, независимо от производителя. Есть много причин, по которым вам может понадобиться сделать фиктивным местоположение (большинство из них безобидны), я надеюсь вы не занимаетесь ничем противозаконным.

Сама процедура очень проста, вам даже не нужно будет делать root на смартфоне.

Вот список шагов, которые нужно сделать.

#1 Скачать приложение для фиктивных местоположений на Андроид

Перво-наперво, нужно скачать приложение для фиктивных местоположений GPS. Их довольно много, но я рекомендую использовать Fake GPS location.

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

#2 Как включить режим разработчика

Чтобы включить «Режим разработчика», нужно перейти раздел «О телефоне» и найти пункт с информацией о программном обеспечении. Найдите пункт «Номер сборки», на телефонах Xiaomi это номер MUIU и нажмите на него 7 раз.

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

#3 Установите приложение для фиктивных местоположений

После того, как включите настройки для разработчиков, зайдите внутрь и найдите пункт «Выбрать приложение для фиктивных местоположений». Нажмите на него и выберите бесплатное приложение для фиктивного местоположения от Lexa.

#4 Включить определение местоположения только по GPS

Поскольку сейчас смартфоны стали слишком умными, при определении местоположения они используют несколько методов. Кроме GPS, они также используют сотовые данные и Wi-Fi. При подмене местоположения это может создавать определенные местоположения.

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

#5 Подделываем свое местоположение

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

Я несколько раз проверил, как работает приложение, Google и Яндекс Карты правильно определял мое фиктивное местоположение, находящиеся на расстоянии несколько тысяч километров от моего реального нахождения.

Друзья! Рекомендую попробовать самый быстрый лаунчер Poco Launcher от Xiaomi.

В этом уроке:

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

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

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

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

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

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

Создадим проект:

Project name: P1381_LocationBuild Target: Android 2.3.3 Application name: LocationPackage name: ru.startandroid.develop.p1381locationCreate Activity: MainActivity

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

GPSNetworkLocation settings

Экран main.xml:

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

MainActivity.java:

package ru.startandroid.develop.p1381location;    import java.util.Date;    import android.app.Activity;  import android.content.Intent;  import android.location.Location;  import android.location.LocationListener;  import android.location.LocationManager;  import android.os.Bundle;  import android.view.View;  import android.widget.TextView;    public class MainActivity extends Activity {      TextView tvEnabledGPS;    TextView tvStatusGPS;    TextView tvLocationGPS;    TextView tvEnabledNet;    TextView tvStatusNet;    TextView tvLocationNet;      private LocationManager locationManager;    StringBuilder sbGPS = new StringBuilder();    StringBuilder sbNet = new StringBuilder();      @Override    protected void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      setContentView(R.layout.main);      tvEnabledGPS = (TextView) findViewById(R.id.tvEnabledGPS);      tvStatusGPS = (TextView) findViewById(R.id.tvStatusGPS);      tvLocationGPS = (TextView) findViewById(R.id.tvLocationGPS);      tvEnabledNet = (TextView) findViewById(R.id.tvEnabledNet);      tvStatusNet = (TextView) findViewById(R.id.tvStatusNet);      tvLocationNet = (TextView) findViewById(R.id.tvLocationNet);        locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);    }      @Override    protected void onResume() {      super.onResume();      locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,          1000 * 10, 10, locationListener);      locationManager.requestLocationUpdates(          LocationManager.NETWORK_PROVIDER, 1000 * 10, 10,          locationListener);      checkEnabled();    }      @Override    protected void onPause() {      super.onPause();      locationManager.removeUpdates(locationListener);    }      private LocationListener locationListener = new LocationListener() {        @Override      public void onLocationChanged(Location location) {        showLocation(location);      }        @Override      public void onProviderDisabled(String provider) {        checkEnabled();      }        @Override      public void onProviderEnabled(String provider) {        checkEnabled();        showLocation(locationManager.getLastKnownLocation(provider));      }        @Override      public void onStatusChanged(String provider, int status, Bundle extras) {        if (provider.equals(LocationManager.GPS_PROVIDER)) {          tvStatusGPS.setText("Status: " + String.valueOf(status));        } else if (provider.equals(LocationManager.NETWORK_PROVIDER)) {          tvStatusNet.setText("Status: " + String.valueOf(status));        }      }    };      private void showLocation(Location location) {      if (location == null)        return;      if (location.getProvider().equals(LocationManager.GPS_PROVIDER)) {        tvLocationGPS.setText(formatLocation(location));      } else if (location.getProvider().equals(          LocationManager.NETWORK_PROVIDER)) {        tvLocationNet.setText(formatLocation(location));      }    }      private String formatLocation(Location location) {      if (location == null)        return "";      return String.format(          "Coordinates: lat = %1$.4f, lon = %2$.4f, time = %3$tF %3$tT",          location.getLatitude(), location.getLongitude(), new Date(              location.getTime()));    }      private void checkEnabled() {      tvEnabledGPS.setText("Enabled: "          + locationManager              .isProviderEnabled(LocationManager.GPS_PROVIDER));      tvEnabledNet.setText("Enabled: "          + locationManager              .isProviderEnabled(LocationManager.NETWORK_PROVIDER));    }      public void onClickLocationSettings(View view) {      startActivity(new Intent(          android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));    };    }

В 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 (все ок, данные доступны). В этом методе мы просто выводим новый статус на экран.

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

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

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, вставлена симка и выключен мобильный интернет.

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

image

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

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

image

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

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

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

image

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

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

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

image

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

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

image

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

image

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

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

Прочее

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

Метод 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 для обсуждения проблем производительности и для ваших пожеланий по содержанию курса по этой теме 

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Citilink-kabinet.ru
Добавить комментарий