Как ускорить GPS на Android

Как ускорить GPS на Android

iSergium

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

Немного теории с википедии. A-GPS (англ. Assisted GPS) — технология, ускоряющая «холодный старт» GPS-приёмника. Ускорение происходит за счет предоставления необходимой информации через альтернативные каналы связи (расчёт сервером расстояния между сигналами(ом) GSM антенн(ы)). Часто используется в сотовых телефонах, содержащих и приемник GPS.

A-GPS Принцип работы

Теперь ближе к практике. Сами настройки находятся в файле /etc/gps.conf. Редактирование его без root-прав невозможно. Эти настройки подсказывают A-GPS откуда запрашивать текущее местоположение спутников. Разумеется, для работы A-GPS требуется интернет-соединение.

Пример настроек из прошивки CyanogenMod 10.2 (да-да, это полные настройки A-GPS в этой прошивке):

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

Это альтернативные (экстра) серверы и их достаточно для работы, но наша задача ведь в скорости, не так ли? Решение скорости поиска спутников довольно простое: нужно заполнить этот файл оптимальными настройками для Вашего региона.

Если у Вас нет желания искать оптимальные настройки, то можете скачать файл настроек отсюда и заменить имеющийся у Вас. Крайне желательно сохранить где-нибудь прошлую версию файла - бэкапы лишними не бывают. Файл для России находится здесь: ссылка. После замены файла необходимо задать ему разрешения rw-r--r--, затем перезагружайте устройство и проверяйте работу GPS.

ES File Explorer gps.conf разрешения

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

Главный минус решения выше в том, что настройки переполнены. Например, они содержат много NTP-серверов - поиск спутников не начнётся пока A-GPS не проверит их всех. Если какой-то из серверов будет недоступен, то попытки соединиться с ним прекратятся через 60 секунд. Три сервера - 3 минуты и т.д. При полной работоспособности всех серверов и быстром интернет-соединении проблем в скорости поиска спутников быть не должно. Но если какое-нибудь из этих условий не выполняется, то лучше сократить список NTP-серверов.

Оптимальным решением будет указывание нескольких основных NTP-серверов, для европейской части России это будут российский (ru.pool.ntp.org) и европейский (europe.pool.ntp.org). Для азиатской части России рекомендую использовать азиатский сервер (asia.pool.ntp.org). Для Украины ua.pool.ntp.org, для Казахстана kz.pool.ntp.org, для Беларуси by.pool.ntp.org. Обратите внимание, что по этим ссылкам даётся подсказка какие NPT-сервера лучше использовать для конкретной страны - их и используйте в gps.conf.

Далее SUPL_HOST и SUPL_PORT. Их существует несколько (свои, например, есть у Nokia и у T-Mobile), но по стандарту можно указать гугловые. Иногда в конфигах можно встретить эту строчку, но она равносильна ошибке, ибо FQDN - это аббревиатура от "Fully Qualified Domain Name", т.е. "полностью определённое имя домена":

SUPL_HOST=FQDN

В итоге получается вот такой пример оптимального gps.conf для европейской части России (скачать можно отсюда):

NTP_SERVER=ru.pool.ntp.org
NTP_SERVER=0.ru.pool.ntp.org
NTP_SERVER=1.ru.pool.ntp.org
NTP_SERVER=2.ru.pool.ntp.org
NTP_SERVER=3.ru.pool.ntp.org
NTP_SERVER=europe.pool.ntp.org
NTP_SERVER=0.europe.pool.ntp.org
NTP_SERVER=1.europe.pool.ntp.org
NTP_SERVER=2.europe.pool.ntp.org
NTP_SERVER=3.europe.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
SUPL_HOST=supl.google.com
SUPL_PORT=7276

Остальные настройки маловажны или вовсе не нужны.

Дополнительно