Кастомный Dynamic Island для HyperOS на базе LSPosed и Jetpack Compose
Когда Apple показала Dynamic Island в iPhone 14 Pro, разработчики под Android бросились делать аналоги. Большинство приложений из Google Play пошли по простому пути: они создают поверх экрана системный оверлей через службы специальных возможностей (Accessibility Services). На практике такие утилиты часто тормозят, съедают заряд аккумулятора, конфликтуют со стандартными жестами навигации и отваливаются после первой же выгрузки процесса из оперативной памяти.
Китайский разработчик с ником 1812z подошел к задаче иначе. Его проект HyperIsland представляет собой полноценный модуль для фреймворка LSPosed, созданный под прошивки Xiaomi HyperOS 3 и HyperOS 4. Вместо костылей с оверлеями он перехватывает системные события напрямую и рендерит интерфейс острова с помощью современного декларативного фреймворка Jetpack Compose.
Что внутри и как это работает
Главное отличие системного модуля от обычного APK заключается в глубине интеграции. HyperIsland внедряется в системные процессы HyperOS и работает как нативная часть прошивки.
Разработчик реализовал четыре основных блока функций:
- Управление загрузками файлов. Модуль перехватывает события системного Download Manager в HyperOS. Вместо стандартного статического уведомления в шторке пользователь видит компактную плашку с именем файла и плавной полосой прогресса. Прямо из острова можно приостановить скачивание, продолжить его или сбросить задачу.
- Адаптация любых входящих уведомлений. Обычные пуши от мессенджеров, почтовых клиентов или банковских приложений трансформируются в интерактивные карточки острова. Кнопки быстрых действий при этом не теряются, модуль забирает их из оригинального Notification Builder.
- Перехват всплывающих тостов. Короткие системные плашки Toast внизу экрана часто перекрывают кнопки ввода или клавиатуру. Модуль ловит такие всплывашки и аккуратно рендерит их вверху, в едином стиле с остальными уведомлениями.
- Суммаризация текста через нейросети. Нетипичная опция для системных твиков. В настройках модуля можно указать эндпоинт и токен любого API, совместимого с протоколом OpenAI. Если приходит длинное письмо или простыня текста из чата, модуль отправляет запрос к LLM и показывает в карточке острова короткую выжимку сути сообщения.
Отдельного внимания заслуживает визуальная составляющая. Интерфейс острова поддерживает четыре варианта материалов: стандартное гауссово размытие, эффект глянцевого стекла, мягкий свет и полупрозрачное жидкое стекло. Степень размытия и прозрачность подложки можно тонко подстроить под цвет текущих обоев рабочего стола.
Архитектура и технические детали
Кодовая база проекта написана на Kotlin. Архитектурно приложение разделено на две части: Xposed-хуки и UI-модуль на Jetpack Compose.
Хуки встраиваются в системные вызовы NotificationManagerService и службы системного интерфейса HyperOS. Они извлекают метаданные уведомлений: заголовок, текст, иконку приложения и прикрепленные PendingIntent для кнопок действий. Затем данные прокидываются в слой отображения.
Интерфейс острова работает с постоянным отслеживанием выреза камеры, автоматически меняет размеры при появлении новых данных и поддерживает режим постоянного отображения (Persistent Island) с умным скрытием, когда на экране открывается полноэкранное приложение или видео.
Для самостоятельной сборки проекта понадобятся установленный JDK версии 21 и актуальный Android SDK. Сборка релизного пакета запускается стандартной командой Gradle:
./android/gradlew -p android :app:assembleRelease
После компиляции сгенерированный APK устанавливается как стандартный модуль в среду LSPosed, после чего активируется с областью применения к системным пакетам HyperOS.
Практические сценарии и ограничения
Модуль решает давнюю проблему фирменных оболочек Xiaomi, где всплывающие баннеры уведомлений занимают треть экрана и перекрывают контент во время чтения или игр. Компактный остров оставляет рабочее пространство свободным и собирает нужную информацию в аккуратный статус-бар.
Перед тем как ставить проект на свой девайс, нужно учитывать четыре технических ограничения:
- Наличие Root-доступа. Модуль требует разблокированный загрузчик и установленный LSPosed (через Magisk, KernelSU или APatch). Без рута запустить хуки невозможно.
- Строгая совместимость с HyperOS. Проект заточен под внутренние классы и методы оболочки Xiaomi версий 3 и 4. На других прошивках вроде OneUI, ColorOS или чистом AOSP модуль работать не будет.
- Зависимость от стороннего API для AI-функций. Суммаризация текстов работает только при наличии собственного ключа OpenAI или совместимого шлюза, что расходует платные токены.
- Риск нестабильности после OTA-апдейтов. Когда Xiaomi выпускает минорные патчи прошивки, сигнатуры внутренних системных методов могут измениться, из-за чего модуль может временно перестать перехватывать события до обновления кода автором.
Динамика проекта
Проект активно набирает популярность среди пользователей кастомных прошивок и моддеров экосистемы Xiaomi.
Стоит ли пробовать
HyperIsland — отличный пример того, как современный UI-стек Android уживается с низкоуровневой модификацией системы. Для рядовых пользователей с рутированными устройствами Xiaomi это простой способ получить эстетичные интерактивные уведомления без лагов и фонового жора батареи.
Для Android-разработчиков репозиторий представляет интерес как практический образец внедрения Jetpack Compose в окружение Xposed-модулей. Код распространяется под свободной лицензией MIT, документация с примерами настройки доступна на официальном сайте проекта hyperisland.1812z.top. Если вас интересует модификация системных компонентов Android или вы ищете вдохновение для собственных интерфейсных твиков, проект определенно стоит клонировать и разобрать на составляющие.
