
Лекарство от «морской болезни» в смартфоне: Google подсмотрел его у iOS для Android 17
Функция Motion Cues в Android 17 поможет пользоваться телефоном в машине без тошноты. Всё о новой системе, её архитектуре и дате выхода.
Основные идеи
Мнение автора
Разбирая код в Google Play Services и Android Canary, я увидел полностью готовую, но заблокированную функцию Motion Cues. В Android 17 Google, кажется, поступит шикарно — переведёт ее на уровень системного API. Функцию придержали до выхода новой ОС. Очевидно, ждём семнадцатую версию. А пока, если совсем невмоготу сидеть без дела в транспорте, качайте приложение KineStop. Оно работает по тому же принципу, причём аж с 2018 года! Проверенный вариант.
Ой, сколько людей просто не могут взять в руки свой Android в машине или автобусе! Знакомо? Тошнит, голова кружится — сплошной дискомфорт. В общем, жесть.
А всему виной, представьте, какой-то сенсорный конфликт внутри нас. Глаза уперлись в неподвижный экранчик, а тело-то едет! Мозг просто сходит с ума от таких противоречий. И как обидно: мы часами катаемся, а телефоном вот прям нормально не пользуемся.
Но тут есть хорошие новости! Google, кажется, решил прокачать наш любимый Android. Говорят, в грядущей семнадцатой версии появится специальная фича против этой напасти. Очевидно, они что-то придумали, чтобы уменьшить этот дискомфорт.
Функция под названием Motion Cues устраняет это сенсорное несоответствие, добавляя визуальные элементы, имитирующие движение транспортного средства. На экране появляются точки, которые перемещаются в режиме реального времени на основе данных с датчиков движения вашего телефона. Этот простой, но невероятно полезный трюк эффективно «перемещает» экран вместе с вами, потенциально решая проблему укачивания для многих пользователей.
Если эта функция кажется вам знакомой, то это потому, что Google не является первопроходцем в этой области. Хотя функция Vehicle Motion Cues от Apple в iOS 18 может быть более известной, бесплатное приложение для Android реализовало эту идею ещё в 2018 году. Приложение KineStop доступно для любого телефона с Android 7.0 или более поздней версией. Вам нужно просто скачать его, предоставить разрешение «отображать поверх других приложений» и нажать «Старт».

Почему же тогда версия Google должна ждать обновления до Android 17 в следующем году? Этот вопрос не даёт нам покоя с тех пор, как в конце 2024 года мы обнаружили Motion Cues. По словам нашего штатного специалиста по анализу APK-файлов Assemble Debug, эта функция полностью работоспособна, но неактивна в Google Play Services. Однако у неё есть недостаток, который, вероятно, объясняет, почему Google откладывает её выпуск до выхода новой ОС.
Как видно на записи экрана выше, точки движения не появляются над системными элементами, такими как приложение «Настройки», строка состояния, уведомления, быстрые настройки, экран блокировки или панель регулировки громкости. Это происходит потому, что текущая реализация основана на стандартном API наложения Android. Из соображений безопасности Android не позволяет приложениям рисовать поверх этих критически важных системных компонентов, чтобы злоумышленники не могли обманом заставить пользователей выполнять нежелательные действия. Хотя это разумное ограничение безопасности, оно снижает эффективность подсказок движения.
В Android 17 эта проблема может быть решена с помощью API Motion Cues на системном уровне. Данные, полученные из последней 2512-й версии Android Canary, свидетельствуют о том, что этот API передаёт ответственность за рендеринг SystemUI — системному приложению, которое управляет компонентами, в которых в настоящее время не отображаются подсказки Motion Cues.
Теперь в Android есть код — MotionCuesService, IMotionCuesCallback, MotionCuesData, и MotionCuesSettings — который позволяет клиентскому приложению (в данном случае Google Play Services) задавать координаты X/Y, цвет, радиус и расстояние между точками. Затем эти точки отображаются на привилегированном уровне окна с помощью команды startMotionCuesSession . По сути, Google Play Services определяет расположение и внешний вид точек, а SystemUI отвечает за их отображение на экране.
Чтобы сторонние приложения не загромождали экран ненужными точками, Android разрешает использовать API только тем приложениям, у которых есть новое разрешение DRAW_MOTION_CUES . Это разрешение доступно только привилегированным системным приложениям или тем, которые подписаны сертификатом платформы. SystemUI будет подключаться только к сервисам (BIND_MOTION_CUES_SERVICE), которые соответствуют этому требованию, и игнорировать данные от неавторизованных сторонних приложений.
Эта двухуровневая архитектура позволяет обойти ограничения оверлейного API, но, поскольку она основана на новом системном API, для её использования требуется обновление ОС. Это объясняет, почему Google ещё не выпустила эту функцию. В зависимости от планов Google, мы можем увидеть эту функцию в третьем квартальном выпуске Android 16 или, что более вероятно, в Android 17. Хотя мы не знаем, какие планы у Google в отношении этой функции, я лично ставлю на то, что она появится в Android 17.
Google делает не просто «точки от укачивания». Он строит системный стандарт. KineStop — тактический хак, работающий в рамках ограничений. Google же создаёт инфраструктуру: безопасный API, глубокую интеграцию с датчиками и режимами вроде «Переезда». Это переход от лайфхака к контекстной ОС, которая сама адаптируется под среду. Ждут Android 17 не из-за лени, а чтобы представить это как целостное улучшение, а не разовую фичу.
Евгений Делиев, Эксперт DGL.RU
Будем надеяться, что Google выпустит версию этой функции, совместимую с существующими устройствами. Несмотря на ограничения API наложения, многие всё равно сочтут текущую реализацию полезной. Однако, если Google не выпустит эту функцию в таком виде, пользователи всегда могут обратиться к KineStop как к надёжной альтернативе.
Когда Google наконец запустит эту функцию, она может называться «Motion Assist», а не «Motion Cues», чтобы избежать обвинений в копировании Apple. Независимо от названия, мы надеемся, что Google интегрирует её с предстоящим режимом «Переезд», который предназначен для автоматизации настроек устройства для более комфортных поездок. В идеале режим «Переезд» должен автоматически запускать функцию Motion Assist, хотя встроенное в неё распознавание транспортного средства может сделать это ненужным.
Android 17 может получить функцию, которая должна была быть в системе много лет
















