Как я могу включить или отключить GPS программно на Android?
Я знаю, что вопрос о включении/выключении GPS программно на android был обсуждался и , и ответ всегда один и тот же:
«Вы не можете по соображениям безопасности/конфиденциальности, вам нужно переслать на экран настроек местоположения и позволить пользователю включать/отключать его».
Я понимаю, что, однако, я недавно купил Tasker с рынка и, помимо всего прочего, с которым вы можете справиться, вы может устанавливать правила для автоматического включения GPS при входе в заранее определенные приложения и отключить его при выходе (см. здесь для руководства о том, как это сделать, и это просто работает!), и это приложение не может быть подписано с ключом подписи прошивки, поскольку оно работает во многих версиях Android и разных устройствах, и вам даже не нужно укореняться.
Я хотел бы сделать это в своем приложении. Конечно, я не хочу взорвать конфиденциальность пользователей, поэтому сначала спрошу пользователя, хочет ли он включить его автоматически с помощью стандартного флажка «запомнить мое решение», и если он ответит «да», включите его.
Есть ли у кого-нибудь идеи или подсказки о том, как Tasker достигает этого?
Ускорение работы AGPS на Android
Всё началось с того, что я случайно скачал одну прекрасную утилиту — FasterGPS (Market). Немного пошарившись в ней, я внезапно ускорил ловлю GPS в пару раз. Параметры я тогда выставлял наобум.
На днях, я не понял почему, что-то пошло не так, но мне показалось, что теперь приём сигнала вообще пропал и определяется местоположение только вокруг да около — по сотовым вышкам. Пару дней я это изучал и вот результаты.
Нужен Root, любой файловый менеджер (Total Commander, например) и желательно Busybox, впрочем, я не уверен, что он требуется. Для устройств HTC я не знаю что сказать, у них же там какие-то S-OFFы ещё нужны… Не знаю, никогда в HTC-шках не разбирался.
1) Синхронизация времени
Это необходимо для более точного определения местоположения. Если время на телефоне и время атомных часов GPS-спутника сильно различаются, то это может привести к соответствующим задержкам.
Когда устройство подключается к спутникам, проводятся математические расчёты с четыремя неизвестными: координаты x,y,z и разница во времени Андроида и спутника. Исходя из количества спутников задержка меняется. Из-за того, что и спутники, и (как правило) GPS-приёмники движутся, то разница во времени прямо сказывается на скорости обмена данными. Измеряется она в мили- или нано- секундах и запросто может быть в пару тысяч милисекунд (напомню, Милисекунда = Секунда / 1000)
Для синхронизации времени GPS-спутников и времени телефона пока нам необходима утилита Smart GPS Time (QR, Market).
1.1) Ставим программу на устройство.
Желательно выйти на открытую местность или подойти к окну.
1.2) Запускаем, жмём кнопку “Включить GPS” и ждём, пока накопится больше трёх спутников или состояние GPS будет отображать “ Вкл. Работаем “.
Если спутники не ловятся, переходим к пункту 2.
1.3) Жмём кнопку Синхронизировать, пока Разница не станет + 0 ms. Учтите, что погрешность в любом случае появляется (как я заметил, в зависимости от найденных спутников), так что бесполезно постоянно заходить в программу тыкать кнопку, чтобы время всегда шло наравне с атомными часами. Этого не будет никогда. Наша цель сейчас — минимизировать разницу во времени.
Можно протестировать, однако этого врядли будет достаточно. Желательно выполнить все пункты, чтобы приём был увереннее.
2) FasterGPS
2.1) Качаем утилиту по ссылкам выше.
2.2) Открываем и настраиваем таким образом:
Континент: Европа
Регион: Российская Федерация
Можно тестировать с большей длей уверенности. Если что-то изменилось в лучшую сторону — можно не продолжать. Следующие пункты для опытных пользователей или тех, кто хочет быть уверенным, что все действия пройдут не зря.
Для точного определения расположения приёмника требуется соединение к 3-4 и более спутникам (часто бывает от 8 до 15).
Путь 1
2.3) Переходим к расширенным настройкам. Тапнув на параметре всплывает окошко, куда нужно ввести значение этого параметра. Проходимся по всем параметрам и выставляем такие значения ( выделенные – необязательны, но желательны):
DEBUG_LEVEL = 0
INTERMEDIATE_POS = 0
ACCURACY_THRES = 0
ENABLE_WIPER = 1
CURRENT_CARRIER = common
DEFAULT_AGPS_ENABLE = TRUE
DEFAULT_SSL_ENABLE = FALSE
DEFAULT_USER_PLANE = TRUE
REPORT_POSTION_USE_SUPL_REFLOC = 1
SUPL_HOST = supl.google.com
SUPL_PORT = 7276
SUPL_NO_SECURE_PORT = 3425
SUPL_SECURE_PORT = 7275
SUPL_TLS_HOST = FQDN
SUPL_TLS_CERT = /etc/SuplRootCert
C2K_HOST = c2k.pde.com
C2K_PORT = 1234
Путь 2
Файл с настройками AGPS лежит в памяти телефона по пути /etc/gps.conf (именно он перезаписывается программой FasterGPS при изменении каждого параметра выше).
2.3) Создаём на ПК файл gps.conf и при помощи волшебного Ctrl+C/Ctrl+V и Блокнота вставляем туда следующее:
# Строка, начинающаяся с такой решёточки – комментарий
# Пояснения ко многим параметрам есть в расширенных настройках FasterGPS
NTP_SERVER=ru.pool.ntp.org
XTRA_SERVER_1=http://xtra1.gpsonextra.net/xtra.bin
XTRA_SERVER_2=http://xtra2.gpsonextra.net/xtra.bin
XTRA_SERVER_3=http://xtra3.gpsonextra.net/xtra.bin
DEBUG_LEVEL=0
INTERMEDIATE_POS=0
ACCURACY_THRES=0
ENABLE_WIPER=1
CURRENT_CARRIER=common
DEFAULT_AGPS_ENABLE=TRUE
DEFAULT_SSL_ENABLE=FALSE
DEFAULT_USER_PLANE=TRUE
REPORT_POSITION_USE_SUPL_REFLOC=1 SUPL_HOST=supl.google.com
SUPL_PORT=7276
SUPL_NO_SECURE_PORT=3425
SUPL_SECURE_PORT=7275
SUPL_TLS_HOST=FQDN
SUPL_TLS_CERT=/etc/SuplRootCert
C2K_HOST=c2k.pde.com
C2K_PORT=1234
Как вы заметили, именно эти параметры настраиваются в программе.
Но есть одно важное замечание.
Параметр NTP_SERVER указывает на сервер синхронизации времени (ntp.org — проект с огромным количеством серверов синхронизации времени). Зачем он нужен — я так и не понял. Ведь если время приёмника синхронизируется со временем спутника, то зачем NTP-сервер? Однако! Если время приёмника синхронизируется всё-таки именно с NTP-сервером (который тикает в такт часам спутника) исходя из расчитанной задержки времени, то тогда всё встаёт на свои места. Я не уверен в обоих вариантах событий.
2.4) Сохраняем файл и заливаем его на андроид в указанную папку своим любым способом. Подтверждаем замену.
Не бойтесь заменить файл. Если вы запускали FasterGPS, то он сделал резервную копию при первом запуске, которая восстанавливается без проблем в той же программе. Если резервной копии нет, ничего страшного не произойдёт.
2.5) Используя свой любимый файловый менеджер выставляем права доступа к файлу:
Настройка закончена
Желательно перезапустить телефон (просто выключить и включить).
Как результат
имеем высокую скорость и точность позиционирования. Даже гуляя пешком можно заметить как на карте меняется ваше точное местоположение; погрешность, как я прикинул в уме при тестах — около метра, в зависимости от количества словленных спутников.
Но для уверенного приёма необходимо быть на открытом пространстве или в машине. Желательно не сидеть на месте, а менять положение приёмника, даже просто пройдясь туда-сюда.
Как настроить GPS на Андроиде — пошаговая инструкция и решение проблем

Настройки
В современных смартфонах навигационные модули встроены по умолчанию. В большинстве случаев они работают достаточно точно. Просто включите GPS в настройках, запустите приложение «Карты», и за считанные минуты программа определит, где вы находитесь. А если вы и не выключали GPS, то определение займёт и вовсе несколько секунд.
Но что если GPS не работает? Как тогда определить маршрут, скорость, ваше местонахождение? Не стоит спешить нести смартфон в ремонт: чаще всего это решается правильной настройкой телефона.
Вспомогательные сервисы
Кроме собственно спутникового приёмника, для определения вашего местонахождения порой очень полезны вспомогательные настройки. Как правило, они легко включаются на самом телефоне:
[su_list icon=»icon: android» icon_color=»#006905″]
- A-GPS. Этот сервис подгружает данные о вашем местоположении из Интернета, используя данные сотовых сетей, к которым вы подключены. Конечно, точность у него гораздо ниже, но он ускоряет точное спутниковое определение.
- Wi-Fi. А вы не знали, что по данным сетей Wi-Fi тоже можно определить местонахождение?
- EPO. Впрочем, о нём – ниже.[/su_list]


Когда настройка необходима: курьёз Mediatek
Сегодня компания Mediatek (известная также как MTK) – один из лидеров в производстве мобильных процессоров. Даже такие гранды, как Sony, LG или HTC, сегодня создают смартфоны на процессорах MTK. Но было время, когда процессоры этой тайваньской компании использовались только в убогих клонах iPhone или двухсимочных «звонилках».
В 2012-2014 годах Mediatek выпускала вполне достойные чипсеты, однако в них постоянно наблюдалась проблема: неверная работа GPS. Спутники с такими устройствами ведут себя согласно цитате: «меня трудно найти, легко потерять…»
Всё дело было в настройках вспомогательного сервиса EPO. Этот сервис, разработанный Mediatek, помогает заранее рассчитывать орбиты навигационных спутников. Но вот беда: предустановленные по умолчанию в китайских телефонах данные EPO просчитаны для Азии и при использовании в Европе дают сбои!
Исправляется это в современных моделях легко. Напомним, все эти инструкции подходят только для смартфонов на процессорах MTK:
[su_list icon=»icon: android» icon_color=»#006905″]
- Откройте меню настроек Android
- Зайдите в раздел «Время» и выставьте свой часовой пояс вручную. Это нужно для отказа от сетевого определения местоположения для времени.
- Зайдите в раздел «Моё местоположение», разрешите системе доступ к геоданным, поставьте галочки в пунктах «По спутникам GPS» и «По координатам сети».
- С помощью файлового менеджера зайдите в корневой каталог памяти и удалите файл GPS.log и другие файлы с сочетанием GPS в названии. Не факт, что они там есть.
- Скачайте и установите приложение MTK Engineering Mode Start, позволяющую войти в инженерное меню смартфона (https://play.google.com/store/apps/details?id=com.themonsterit.EngineerStarter&hl=ru).[/su_list]

[su_list icon=»icon: android» icon_color=»#006905″]
- Выйдите на открытое место с хорошей видимостью. Вокруг не должно быть высотных зданий или других объектов, мешающих прямому обзору неба. На смартфоне должен быть включен Интернет.
- Запустите приложение, выберите пункт MTK Settings, в нём – вкладку Location, в ней — пункт EPO. Как вы уже догадались, мы обновляем данные EPO для СВОЕГО часового пояса и времени!
- Нажмите кнопку EPO (Download). Загрузка должна произойти за считанные секунды даже при слабом соединении.
- Вернитесь в раздел Location, выберите вкладку YGPS. Во вкладке Information последовательно нажмите кнопки Cold, Warm, Hot и Full. C их помощью обновляется информация о местоположении спутников на орбите, поэтому каждый раз придётся дожидаться загрузки данных. К счастью, это дело секунд.[/su_list]
[su_list icon=»icon: android» icon_color=»#006905″]
- В той же вкладке нажмите кнопку AGPS Restart. Вспомогательный сервис AGPS теперь будет учитывать уже загруженные данные и точнее определять положение спутников.
- Перейдите в соседнюю вкладку NMEA LOG и нажмите кнопку Start. После этого перейдите во вкладку Satellites. Вы увидите, как система обнаруживает спутники. Этот процесс должен занять 15-20 минут, в его ходе значки спутников будут из красных становиться зелёными. Следите, чтобы дисплей в это время не отключался, а лучше отключите спящий режим вообще. Когда все (или большинство) спутники «позеленеют», вернитесь во вкладку NMEA Log и нажмите Stop.
- Перезагрузите смартфон.[/su_list]
Да, это далеко не самая простая процедура. В зависимости от версии процессора MTK (мы описали действия для платформы MT6592) процедура может несколько отличаться, но по сути остаётся той же. Но после этих действий GPS на смартфоне будет работать замечательно.
Блокировка A-GPS для России — как работает, как починить GPS
Американские санкции проявляются в совершенно неожиданных местах, например, производители чипсетов отключают доступ к своим ресурсам. Когда вы не можете почитать описание на сайте Qualcomm без VPN, ничего страшного не происходит, скорее вам неприятно, что доступ из России закрыли по IP-адресам. Но есть сервисы, которые важны для работы устройств, и для них тоже наблюдаются проблемы с блокировкой. Одним из таких сервисов является A-GPS.
Большинство пользователей современных устройств забыли о том, что лет двадцать назад определение координат в системе GPS требовало времени, вы выходили на улицу и ждали пять-семь минут, пока устройство найдет спутники, определит ваши координаты. Это называлось “холодным” стартом. Появление A-GPS позволило сократить время определения координат до нескольких секунд, а заодно добавить навигацию внутри помещений, что изменило нашу жизнь. Вспомните, с какой легкостью мы ориентируемся в больших торговых центрах, а те же карты ведут нас к нужному ресторану или магазину. К удобству быстро привыкаешь, и оно, конечно же, становится привычной частью жизни. Для желающих вспомнить, как устроена система GPS, рекомендую статью, написанную пятнадцать лет назад, принцип работы системы никак не изменился.
Mobile-review.com Описание технологии GPS
Описание технологии GPS
Весной в Qualcomm начали блокировать для российских пользователей свои ресурсы, которые выдают альманахи для A-GPS, обращение к ним фактически возвращает “мусор”, он не помогает определять координаты, а скорее затрудняет их поиск. Пару недель назад к санкциям присоединилась компания MediaTek, которая стала выдавать такие же результаты. Другие разработчики чипсетов пока ничего подобного не делали, равно как и сами производители железа обходят проблемы на уровне прошивок, хотя тут каждая компания поступает согласно своему разумению.
На практике плохо работающий GPS выглядит очень просто, опишу ситуацию на паре примеров. Запускаю дома приложение для заказа такси, мои координаты не определяются, приложение предлагает выбрать мое местоположение на карте. Обычно координаты подставляются если не моментально, то за считанные секунды. Тут же этого просто не происходит. Приходится, чтобы не ждать, залезать и ставить координаты вручную, выбирать точку на карте.
Сбой в определении координат — это всегда плохая работа A-GPS. Минимальный процент ошибок происходит из-за сломанной антенны после падения, но тогда вы постоянно будете где-то в великом нигде, вы точно узнаете, что у вас ничего не работает. Тут же нерабочий A-GPS не позволяет получать координаты внутри помещений.
Неделю использовал смартфон с батареей 10 000 мАч. Какие выводы сделал
Сегодня на тесте UMIDIGI Power 7 Max. Это смартфон с …
Субботний кофе №264
Налейте чашку ароматного субботнего кофе и познакомьтесь с новостями недели. Lenovo представила игровую консоль, TCL показала странные смартфоны, а Tesla обновила Model 3…
Тест Genesis G80. Красивый седан.
Второе поколение седана Genesis G80 представили в России в конце октября 2020 года, а живые машины у дилеров марки появились в начале 2021 года.
Обзор Hi-Fi наушников Kennerton M12 Titan
Доступные по цене Hi-Fi наушники с «музыкальной» подачей, полностью ручной сборкой и титановым драйвером — новинка Kennerton M12 Titan. А ещё они производятся в России!
Как победить эту напасть? Как правило, вам достаточно включить VPN-клиент, и все тут же начинает работать. Многие могут сказать, что и включение VPN не помогает, ждут немедленного результата. Увы, его может и не быть по причине того, что альманах в памяти смартфона стерт и требуется загрузить его снова. В большинстве устройств такой штатной опции просто нет — когда-то на некоторых смартфонах даже была отдельная клавиша для обновления альманаха и включения навигации.

Поэтому если у вас есть такие проблемы, то стоит поставить дополнительный софт, показывающий работу GPS, в нем, как правило, есть возможность обновить альманахи (стереть старые). Для Android советую приложение GPS Test, вы можете его найти вот тут.
Проблема не носит характера массовой и затрагивающей всех пользователей без исключения. Кто-то просто не обращает на это внимания, что нормально. Некоторые люди даже осознанно выключают навигацию на своих смартфонах, так что им это неважно. Но тут есть и пара моментов, которые стоит затронуть. На сетях мобильных операторов часто используется оборудование, которое отдает на телефоны альманахи, выполняет функцию A-GPS. В зависимости от приоритета, выставленного разработчиками смартфона, альманах загружается с того или иного источника. Как результат, настройки со стороны производителя чипсета могут вовсе игнорироваться, их данные не используются. Операторы вообще могут перехватывать трафик на серверы той же Qualcomm и возвращать правильные альманахи, тут нет никакого шифрования или чего-то подобного, система открыта и прозрачна. Но при этом у нас всегда есть возможность настроить в том же Android то, откуда забираются данные (настроить со стороны производителя, а не поставщика чипсета).
Учитывая, как давно эта проблема существует и насколько мало ее обсуждают, можно сказать, что блокировка прошла незамеченной со стороны широких народных масс. Добавим сюда еще пару моментов — многие разработчики приложений самостоятельно “химичат” с позиционированием устройств, в частности, обновляют альманахи. Например, в «Яндексе» это делают из каких-то своих соображений, возможно, хотят получать точные координаты своих пользователей. Отсюда большее число проблем, вылезающих в софте (в том же 2ГИС ничего подобного не замечено).
Жаль, что как на iOS, так и на Android нет явного меню для управления тем, где забирать альманахи, как работает тот же A-GPS, все скрыто под капотом, вы ничем управлять не можете. Но сама природа блокировок очень искусственная, сделать их действенными — это дорого и долго, отсюда у той же Qualcomm нет желания следить за результатом. Сделано это на отшибись, просто чтобы показать, что компания соблюдает санкции.
Насколько мне известно, в новых прошивках многих производителей исправляется доступ к альманахам от Qualcomm (просто убирают его, ориентируются на другие адреса), некоторые создатели смартфонов и вовсе поступают хитро — пропускают трафик через себя, чтобы показать, что телефон не в России и у него другой IP-адрес.
Интересно, что формально включение VPN решает проблему, но для кого-то, наоборот, может ее создать, ваш смартфон не достучится до нужного адреса, где он должен получить альманах. Поэтому посмотрите, как именно работает ваш смартфон, как проявляется проблема с навигацией, если она есть.
И стоит помнить, что на открытом пространстве смартфон получит альманахи со спутников (если нет таковых из сети). За пять-десять минут работа GPS придет в норму, а дальше в ближайшие сутки определение координат будет быстрым (конечно, если вам не будут подсовывать через сеть мусор в альманахах). На мой взгляд, просто нужно помнить, что такая нишевая проблема может существовать и она проявляется не для всех устройств — тут важны ваш оператор, чипсет и производитель устройства, наличие или отсутствие VPN. Но главное, что вы можете самостоятельно решить эту проблему, даже потенциально заблокировать вам GPS никто не сможет. Максимум создать небольшие затруднения со скоростью определения координат. Так что переживать об этом точно не стоит.


