Headswap — это приложение с открытым исходным кодом, которое позволяет использовать Android Auto в автомобилях, штатно поддерживающих только протокол Baidu CarLife. Программа выступает посредником: для головного устройства (ГУ) она имитирует телефон, а для Android Auto на смартфоне — головное устройство. Код проекта опубликован на GitHub под лицензией GPL-3.0.
Разработчик реализовал поддержку протокола, изучив официальное приложение Baidu CarLife 8.6.7 и его нативные библиотеки. Headswap выполняет процедуру рукопожатия, включая авторизацию через RSA-подпись с использованием ключа из официального APK. Приложение поддерживает работу через USB AOA и Wi-Fi, обеспечивая передачу видеопотока с помощью перекодирования или прямого проброса данных.
В процессе разработки были устранены программные несовместимости с ГУ различных производителей, таких как Mobis, Desay и LG. Решения включали ограничение размера пакетов данных до 16 КБ, адаптацию битрейта для предотвращения переполнения буферов и исправление параметров видеопотока (SPS). Для отладки автор создал эмуляторы на языке Python, имитирующие поведение магнитолы и сервера Android Auto.
На текущий момент Headswap содержит около 27 тысяч строк кода на Kotlin и весит 3,5 МБ. Приложение учитывает особенности конкретных моделей автомобилей через систему из двенадцати флагов конфигурации. В будущих обновлениях планируется оптимизация работы для устаревших ГУ и улучшение алгоритмов автоматической адаптации к ограничениям различных мультимедийных систем.






