Автор: @DezzK
Приложение, позволяющее передавать GPS-координаты с Android-смартфона на головное устройство автомобиля. Аналог GPS Tether и Share GPS. Разработано с упором на максимальную стабильность и производительность, нулевое обслуживание, а также минимальное энергопотребление сервером в режиме ожидания. Как клиент, так и сервер, не требуют запуска с использованием Macrodroid или других сторонних приложений. Оба приложения устанавливаются в качестве служб, клиент сам подключается к серверу при подключении ГУ к точке доступа Wi-Fi.
GPS сервер:
Установить gnss-server-x.x.x.apk на смартфон, с которого планируется раздавать координаты GPS для головного устройства автомобиля.
Запустить приложение «GPS Сервер», дать запрошенные права и стартануть службу. Необходимо дать постоянный доступ к службам геопозиционирования, а не только во время работы приложения.
Дополнительно, убрать оптимизации батареи для приложения в настройках Android (для Xiaomi убрать все ограничения контроля использования батареи для приложения).
В настройках Android, добавить приложение «GPS Сервер» в качестве запускаемых в фоновом режиме, это необходимо для запуска приложения при перезагрузке смартфона.
GPS клиент:
Установить gnss-client-x.x.x.apk на головное устройство автомобиля.
Запустить приложение «GPS Клиент», дать запрошенные права.
Дополнительно, через меню разработчика, выбрать приложение GPS Клиент в качестве провайдера фиктивных местоположений (или то же самое можно прописать через adb shell appops set dezz.gnssshare.client android:mock_location allow).
Желательно отключить оптимизации батареи для приложения в настройках Android.
Стартануть службу.
При нормальной работе связки, на смартфоне в шторке вы увидите сообщение, что GPS Сервер запущен и количество подключенных в данный момент времени клиентов (при подключении должен быть хотя бы один клиент). Когда доступен GPS сигнал, также появляется информация о количестве доступных спутников и возрасте получаемых данных (если возраст больше 1 секунды — сигнал GPS не принимается или глушится, если отрицательный, то это скорее всего говорит о рассинхронизации времени смартфона со спутниками, но на качество работы программы не влияет).
Программа не управляет включением/выключением точки доступа Wi-Fi, этим должна управлять сторонняя программа (например, Macrodroid при подключении к ГУ автомобиля по Bluetooth). В некоторых телефонах, например Samsung, есть такая вещь, как Сценарии.
Если через несколько минут после подключения, GPS сигнал перестаёт обновляться, убедитесь, что GPS-серверу разрешена работа без ограничений по энергопотреблению (п. 3 установки).
Ещё момент: сервер не требуется включать/выключать, он рассчитан на постоянную работу с минимальным энергопотреблением.
Исходный код и APK-файлы для скачивания доступны на GitHub разработчика: https://github.com/DezzK/gnss-share