26.04.2021

GPS L5

Я тут несколько лет назад как-то уже затрагивал тему GPS. Однажды, прогуливаясь по горам Черногории, решил записать GPS-трек, благо программка на смартфоне готовая уже была. Прошли мы тогда с женой немало, треккер выдал 15 км.

Однако, приехав домой, я обнаружил, что записанный трек никуда не годиться. Так как гуляли мы в гористой местности, то, если верить треккеру, благодаря отражению сигнала GPS от гор, приобрели магическую способность мгновенно перемещаться на противоположный склон, а потом сразу назад. Поэтому прошли мы гораздо меньше, наверное, около 10 км или чуть больше. Но самое главное, делится треком не было никакого смысла.

В результате родилась у меня идея написать самому простенький треккер, но только такой, который бы откидывал недостоверные точки на маршруте. Заодно немножко погрузился в тему точности GPS-позиционирования и выяснил,что начиная с версии спутников GPS-IIF они передают сигнал в полосе L5, которая обещала прямо чудеса позиционирования: ошибку менее метра и частоту определения координат 5 раз в секунду.

А тут у меня как раз начал потихоньку морально устаревать смартфончик Alcatel, в связи с чем я с трудом, но все-таки задавил жабу  и купил новый смартфон с поддержкой L5. С трудом, потому что в основном пользуюсь смартфоном как телефоном, да и то не очень часто.

В общем, не прошло и года пары лет после покупки смарта, как я вернулся к идее написать треккер. Скопировал код из программки-акселерометра и давай тестить. С печалью обнаружил, что никаких 5 отчетов в секунду нет и рядом. Да и точность, которую мне возвращал Android, лучше не стала, а как бы даже наоборот.
Впрочем, программки, которым требовался GPS, стали работать гораздо лучше. Долго я копался, пытаясь понять в чем дело. Думал, может L5 надо как-то специально активировать. Потом предположил, что в России из-за параноидальных требований государства может производители отключают. В общем, информации очень мало, никто в тему особо не погружается, очень она специфична.

В конечном итоге всё оказалось проще (но это не точно): полез в справочник по API. И тут-то выяснилось, что оказывается то, что я использовал, успело устареть. Но тем не менее исправно работало.
Переписал на новый API. И тут меня ждала частичная удача. На новом API опрос датчиков происходил гораздо чаще, максимальная частота - 3 раза в секунду, но не стабильно, все-таки чаще в районе 1 раза в секунду. 5 Гц пока так ни разу и не увидел. Не знаю почему, может новых спутников пока не достаточно, или еще в чем-то дело.
Точность новое API выдает такую же, как и старое и не лучше, чем было на стареньком Alcatel. Тем не менее, точки лежат более ровно, сильных выбросов в стороны от траектории сейчас нет.
Есть лишь один вопрос (из многих) к Гугл: если старое API продолжает работать, то почему оно не может возвращать данные чаще? Никаких принципиальных преград я к этому не вижу.

Тестирую свое приложение дальше и обнаруживаю, что оно не работает в фоновом режиме. Трачу кучу времени на то, что бы понять, где я налажал в программе. В конечном итоге выясняется, что начиная вроде с 29 версии Android они ввели дополнительное разрешение, которое нужно запрашивать у пользователя на опрос GPS в фоновом режиме.
Ладно, добавляю это разрешение. Не работает в фоне! Копаюсь дальше. И выясняю, что начиная с 30 версии (на которую я как раз за пару недель до этого обновил смартфон) этого разрешения недостаточно! Для каждой такой программы нужно запрашивать специальное разрешение у Гугл, разрешение пользователя недостаточно!

То есть я специально купил устройство, которое имеет необходимое для меня оборудование и возможности, сам написал для него программку для индивидуального использования, но не могу использовать её даже в отладочном режиме! Это просто апофеоз свободы! И все это ради нашей безопасности! )))

Я как-то в поездке в Питер обратил внимание на надписи: "Ради вашего удобства..." и "Ради вашей безопасности...", их там много было. Но на самом деле, по факту, это было не ради моей безопасности или удобства посетителей. Все эти надписи были лишь для удобства обслуживающих организаций.
В Гугле, думаю, тоже самое. Им плевать на безопасность пользователей, да и не обеспечивается она таким образом все равно, лишь некоторым, таким как я, слегка жизнь усложняет. Самое главное - чтобы к Гуглу ни у кого не возникло претензий.

Конечно, ради маленького треккера я не буду оформлять заявку в Гугл, тем более имею крайне негативный опыт взаимодействия с ними. Решу вопрос как-нибудь проще: например, отключу тач-скрин и покрашу экран в черный цвет. На устройствах с AMOLED-экраном это будет почти что тоже самое по энергопотреблению, что выключить устройство кнопкой. Правда, это не будет полноценным фоновым режимом. )