Как сделать координаты местоположения на телефоне

Обновлено: 06.07.2024

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

Как изменить местоположение на Android

Замаскировать свою реальную геопозицию можно с помощью приложения Hola Fake GPS location. После первого
запуска придётся потратить несколько минут, чтобы сделать необходимые настройки. Но в дальнейшем вы сможете почти мгновенно менять координаты в простом и удобном интерфейсе.

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

Когда внесёте указанные выше настройки, приложение будет готово к работе. Чтобы поменять с его помощью координаты для всех остальных программ, достаточно выбрать ложное местоположение на карте и нажать на кнопку GO. Вы можете выбирать любые локации по всему миру. Чтобы отключить подмену координат, нужно нажать на STOP.

Передача ложного местоположения работает в фоновом режиме. Включив Hola Fake GPS location, вы сможете как обычно делиться координатами в социальных сетях и делать новые снимки в остальных программах. Но теперь другие пользователи будут видеть не вашу фактическую локацию и не места, в которых вы делали фото, а выбранные координаты.

Управлять работой Hola Fake GPS location можно также с помощью специального виджета, который появляется после установки программы на панели уведомлений.

Если решите использовать ложную геопозицию, чтобы разблокировать неработающие в вашей стране сервисы, знайте: у вас, скорее всего, ничего не выйдет. Для этой цели подойдут VPN-сервисы.

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

Приложение Hola Fake GPS location доступно по оплачиваемой подписке либо полностью бесплатно. Но во втором случае программа будет использовать вычислительную мощность вашего устройства во время его простоя и немного трафика.

Как изменить местоположение на iOS

К сожалению, в iOS невозможна подмена местоположения с помощью фейковых GPS-данных. Высокая степень закрытости системы не позволяет установить программы из других источников, кроме официального магазина приложений App Store, в котором для подобных инструментов нет места. Модераторы Apple проверяют все приложения и при наличии нарушающих правила функций отказывают разработчикам в публикации.

Единственный шанс изменить местоположение в iPhone или iPad — это сделать джейлбрейк и воспользоваться одним из нескольких доступных в Cydia твиков вроде LocationHandle или LocationFaker. Однако такой вариант доступен только пользователям с iOS 10.2 и более ранними версиями, которые поддаются джейлбрейку.

В прошлый раз, когда мы рассказывали о приложении МегаФон Навигация и принципах его работы, мы упомянули еще несколько услуг, главной составляющей которых является определение координат и их интерпретация (Location-based services).

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

Теория

Включив ваш мобильный телефон или любое другое устройство, работающее в GSM-сети (Mobile station), вы запускаете огромный технологический процесс.

Первое, что делает ваше мобильное устройство (MS), это осуществляет поиск ближайших базовых станций (Base station, BS). Если быть точнее, то прослушивает эфир в поисках доступных сот. Телефон может прослушивать до 16 широковещательных каналов. Из их числа определяет 6, наиболее удовлетворяющих с точки зрения затрат энергии и качества сигнала. Но в один момент времени работать будет только с одной. У каждой из сот есть свой уникальный номер (CellID).

При этом все базовые станции (BS) объединены в группы. Как правило, принадлежность к группе определяется их местоположением (Location area), и чтобы базовые станции можно было идентифицировать, каждой группе присваивается уникальный номер — Location area code (LAC).



Определение положения абонента в сотовой сети.

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


Практика

Благодаря тому, что работа сотовой связи неотрывно связана с определением местоположения, стали развиваться и геолокационные сервисы на основе GSM/UMTS-сети.

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

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

Для услуг Радар и Маячок, где местоположение отслеживается только по запросу от абонента, мы используем следующую логику работы.

При каждом запросе от сервиса система обращается к цепочке оборудования и получает параметр CellID и LAC. Мы в свою очередь знаем координаты каждой базовой станции и после дополнительной математической обработки показываем пользователю зону, в которой может находиться абонент. Чем больше плотность размещения базовых станций, тем точнее определение координат. Соответственно в черте города погрешность ниже, чем за городом.

  • С заданной частой проверяют данные с базовых станций, чтобы увидеть, не зашел ли абонент в зону, которая выделена для мониторинга;
  • Уточняют данные геопозиции по запросу. Таким образом можно получить последнее местоположение абонента;
  • Строят маршрут передвижения абонентов на основе исторических данных;
  • Прогнозируют скопления и пути миграции абонентов на основе сохраненной истории.

Возможно применение и обезличенных данных (без использования данных абонента), когда для анализа используется только географические координаты. Мы называем это Геопространственный анализ – агрегация информации о миграции и перемещении, скоплении абонентов. Получив подобную информацию, можно найти наиболее подходящее место для развития сети магазинов, офисов обслуживания или установки банкоматов. Но это не единственной применение, благодаря этим данным можно прогнозировать новые транспортные развязки, остановки общественного транспорта, социальные объекты: парки, прогулочные зоны и прочее.



Пример анализа скопления мобильных устройств определенной категории в регионах.

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

Заключение

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 добавим строки:

Экран main.xml:

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

MainActivity.java:

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

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


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

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


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

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

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


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

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


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

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


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


А у 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, на которой есть поля для ввода координат и кнопка отправки.

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

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

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

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

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

Как переслать свою геолокацию на телефоне Android

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

Как поделиться геолокацией в WhatsApp

Карта в приложении открывается с множеством точек с разным цветом. Чтобы сконцентрировать экран на вашем месте, нажмите на кнопку с целью вверху. Места на карте будут отображены и в списке ниже. Скинуть гелокацию с Андроида доступно в других приложениях – картах, Viber, Email.

Геолокация показывает неправильное местоположение

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

Настроить точность геолокации

В телефоне Android можно повысить точность геолокации. Используйте карты Гугл, выберите точку, где вы находитесь. Внизу нажмите на кнопку Настроить. Теперь будет возможность откалибровать устройство. Попробуйте сменить подключение. Вместо WiFi активируйте мобильный интернет, так как ваше местоположение определяется сразу несколькими способами:

  • Через спутник (GPS). Точность составляет около 20 метров. Если вы находитесь в здании, она может снизиться;
  • Через точки WiFi, к которым подключено устройство;
  • Через вышки мобильных операторов.

В настройках можно включить определение своей геолокации сразу по всем типам. Найдите параметр Местоположение и выберите По всем источникам.

Узнать мои координаты на Яндекс карте

Координаты в Яндекс Картах

Через браузер на компьютере можно быстро установить GPS координаты любой точки на Земле. Откройте карту онлайн и найдите место, где вы находитесь. Через поиск ищите свой город и на карте в нужной точке нажмите ПКМ. В меню нажмите Что здесь? И слева увидите данные местности.

Скинуть геоданные с Яндекс.Карты на телефоне

Читайте также: