Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Iampatr/YNarrows

Open more actions menu

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

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.