Skip to content

Iampatr/YNarrows

Repository files navigation

YNarrows (Стрелки, сигналы)

HUD-приложение для второго дисплея автомболией Lynk Co (Geely Monjaro platform) 01/03/05/09 с операционной системой ГУ - Андроид 9 (oneOS). Отображает навигацию с Yandex Navi и 2ГИС: стрелки поворотов, расстояние до манёвра, название улицы, сигналы светофора и дорожные события (камеры, ДТП, ремонт).

Как это работает

Два независимых источника данных:

  1. NotificationListenerService — перехватывает уведомления навигационных приложений, через рефлексию RemoteViews извлекает текстовые представления VIEW приложения в уведомлении: сигналы светофоров, камеры, маневры и иные события. По рефлексии предопределенных пользовательских представлений дествий в RemoteViews определяет устанавливаемые значения и на основе полученных данных интерпретирует свершившееся событие с последующим выводом информации на ХУД.

  2. AccessibilityService (NodeInfoForNavi) — читает accessibility - события в нодах Yandex Navi по заранее известным значениям. Для их предопределения предусмотрен также режим отладки - чтение дерева нодов текущего отображения основного дисплея до 9 уровня вниз - для нагладной отладки на ходу.

Оба пути отправляют broadcast-и в HUDActivity, которая отображает данные на втором дисплее (displayId=2, bounds 0,721,1920,1080) в режиме свободного окна (windowingMode=5) и прозрачной темой окна, чтобы не перекрывать собой другие данные на HUD.

  1. Предоставляет подробную информацию о всех маневрах, предусмотренных оригинальным приложением, включая номера съездов с кругового движения и номера поворотов (для AccessibilityService - foreground mode в Яндекс навигаторе), а также дополнително к маневрам - камеры и сигналы светофоров с отсчетом обратного времени (в режиме NotificationListenerService - background mode в Яндекс навигаторе). Маневры для 2gis обеспечиваются лишь в режиме работы background mode для 2gis. Для 2gis маневр определяется прямой передачей иконки уведомления на ХУД. Расстояние и улица - из описания и заголовка уведомления.

  2. Сенсоры Geely (ecarx.adaptapi) — 7 датчиков через рефлексию: Обороты, Скорость, Температура салона, Педаль тормоза, Педаль газа, Угол руля, Дождь. Интервалы опроса: 100 мс (скорость/педали/руль/обороты), 5000 мс (температура/дождь). Управление через SensorPollingManager (синглтон с refCount).

  3. Ограничение скорости — из Яндекс Навигатора (нода text_speedlimit в NodeInfoForNavi). Отображается на HUD. При отсутствии broadcast >3 сек — скрывается.

  4. SpeedDiffGauge — шкала разницы текущая скорость − лимит (−20…+20 км/ч). Вертикальная градиентная полоса (красный→жёлтый→прозрачный), треугольники при превышении лимита, плавное появление/исчезновение (500ms fade). Отключается в настройках (чекбокс «Не показывать штрафометр»).

  5. Коэффициент скорости — настраиваемый множитель (по умолч. 3.86), сохраняется в SharedPreferences. Применяется к сырым данным с CAN-шины для корректировки отображаемой скорости.

Возможности

  • Стрелки поворота (25+ типов: налево, направо, разворот, кольцо с номерами съездов и т.д.)
  • Расстояние до манёвра и название улицы
  • Сигналы светофора (зелёный, жёлтый, красный + секунды до смены)
  • Дорожные события: камера, ДТП, дорожные работы
  • Уведомления 2ГИС (отображение текущего трека)
  • Отображение сенсоров (скорость, обороты, педали, руль, температура, дождь)
  • Шкала превышения скорости (SpeedDiffGauge) с fade-анимацией
  • Настройка отображения (скрытие улицы, скрытие шкалы превышения, коэффициент скорости)

Требования

  • Android 9+ (minSdk 28, targetSdk 35)
  • Установка как system/priv-app (требуются системные разрешения) — возможна также работа в качестве пользовательского приложения
  • Включённый Notification Listener Service
  • Включённый Accessibility Service
  • Yandex Navi или 2ГИС
  • Автомобиль на платформе Geely (ecarx) — Lynk Co 01/03/05/09, Geely Monjaro
  • Доступ к системному API Geely (через рефлексию ecarx.adaptapi)

Сборка

./gradlew assembleDebug

JDK 17, Gradle 8.11.1, AGP 8.10.1.

Disclaimer

Для работы с сенсорами Geely требуется наличие системного API ecarx.adaptapi на устройстве. Приложение не содержит взломанных или модифицированных проприетарных компонентов — используется стандартная рефлексия Java для обращения к уже установленным в системе библиотекам.

About

YNarrows ("Стрелки, сигналы") — HUD-приложение для второго дисплея Geely

Topics

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors