Часто задаваемые вопросы

Поддерживает ли Android 10 вертикальную синхронизацию для каждого дисплея?

Пока нет. VSync стандартного дисплея в Android 10 управляет всеми дисплеями.

Можно ли включать и выключать дисплеи по отдельности?

В Android 10 реализация состояния питания устройства в первую очередь глобальна и определяется состоянием питания дисплея по умолчанию. Только виртуальные дисплеи можно включать и выключать по отдельности, устанавливая поверхность в null . Activity или WindowManager реагирует на это изменение состояния.

Как динамически настроить связь ввода-отображения?

В Android 10 нет встроенного способа динамически настраивать связь между вводом и устройством, но в большинстве случаев можно применять некоторые обходные пути. Подробности см. в разделе Маршрутизация ввода .

Как включить системные украшения на дисплее?

Для тестирования наиболее простым методом является использование опции разработчика Force Desktop Mode, которая включает системные декорации и поддержку IME на всех дополнительных дисплеях. Это работает для системных дисплеев, таких как физические панели или симулированный дисплей, но может быть ограничено для виртуальных дисплеев, принадлежащих приложениям.

Для производства предоставьте файл конфигурации по умолчанию. Подробности см.:

Как настроить действия для определенных дисплеев?

Используйте LaunchParamsController , который перехватывает все запуски активности и позволяет системному компоненту изменять параметры, используемые для запуска. Он доступен в system_server .

Можно ли разблокировать устройство с помощью дополнительного экрана?

Реализация экрана блокировки по умолчанию в Android 10 не является интерактивной и не позволяет разблокировать устройство. OEM-производитель может реализовать свой собственный экран блокировки при условии соблюдения основных требований безопасности.

Состояние блокировки устройства является глобальным и применяется ко всем дисплеям.

Как отобразить IME на другом дисплее, нежели целевой?

IME может отображаться только на дисплее, настроенном в DisplayWindowSettings . Если конфигурация не включена для дисплея, на котором запрашивается ввод, IME отображается на дисплее по умолчанию.

Как всегда отправлять ключевые события на определенный дисплей?

Клавиатура считается нецелевым источником ввода, поэтому ввод идет в самое верхнее сфокусированное окно в системе. Пример целевого ввода клавиш см. в реализации кнопок «Назад» или «Домой» в классе PhoneWindowManager . Эти клавиши нацелены только на дисплей, тогда как в Android 10 они отображаются.

Как обрабатывается звук?

Android 10 не содержит существенных улучшений в этой области. Поддержка многозонного звука для Auto была добавлена ​​в Android 10, но общее решение для обработки отдельных целевых аудиопотоков еще не разработано.

Можно ли отображать одно и то же приложение на нескольких дисплеях?

Если приложение поддерживает это, то можно создать несколько экземпляров действий приложения. По умолчанию каждый из них выполняется в одном и том же процессе. Chrome — пример такого приложения. Удобно протестировать это с помощью примера Launcher , который позволяет запустить целевое действие и запросить новый экземпляр.

Можно ли создать несколько экземпляров одного и того же приложения для разных экранов/пользователей?

AOSP не позволяет создавать несколько отдельных песочниц и процессов одного и того же приложения для одного и того же пользователя. Варианты использования, связанные с этим запросом, требуют одновременной многопользовательской поддержки вместо разделения на уровне приложения.

Если разные пользователи хотят использовать одно и то же приложение, они должны войти в систему со своими профилями. Разделение на уровне приложения требует входа в приложение для каждого сеанса. В противном случае данные других пользователей могут все еще присутствовать.

Поддерживает ли Android 10 работу нескольких пользователей?

Нет. Android 10 поддерживает одного вошедшего в систему пользователя.