Мастер настройки интеграции

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

Хотя мастер установки (SUW) часто рассматривается как задача для главной страницы, мы рекомендуем настроить его как часть панели управления для обеспечения более стабильной и надежной работы на главной странице.

Настройте барьер видимости дома.

Убедитесь, что событие, ограничивающее видимость домашней страницы, является событием, напрямую связанным с загрузкой домашней страницы, и имеет более высокий приоритет для фильтра намерений домашней страницы, чем событие SUW.

Для получения более подробной информации см. справочную платформу в пакете StubCarLauncher . Мы рекомендуем включить этот пакет в ваши сборки и установить его для всех пользователей.

Настройте панель SUW.

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

Чтобы панель SUW не была закрыта для обзора, мы рекомендуем разместить её на относительно высоком уровне. Эта панель должна отображать и скрывать системные события _System_EnterSuwEvent и _System_ExitSuwEvent соответственно. Рассмотрим следующий пример конфигурации:

<TaskPanel id="suw_panel" defaultVariant="@id/closed" displayId="0" controller="@xml/suw_panel_controller">
    <TaskBehavior newTaskLaunchPolicy="REPARENT_TO_SOURCE"/>
    <Variant id="@+id/base">
        <Layer layer="@integer/suw_panel_layer"/>
        <Bounds left="0" top="0" width="100%" height="100%" />
        <Background color="@color/suw_panel_background_color" />
    </Variant>
    <Variant id="@+id/opened" parent="@id/base">
        <Visibility isVisible="true"/>
    </Variant>
    <Variant id="@+id/closed" parent="@id/base">
        <Visibility isVisible="false"/>
    </Variant>

    <Transitions>
        <Transition onEvent="_System_TaskOpenEvent" onEventTokens="panelId=suw_panel" toVariant="@id/opened"/>
        <Transition onEvent="_System_TaskPanelEmptyEvent" onEventTokens="panelId=suw_panel" toVariant="@id/closed"/>
        <Transition onEvent="_System_EnterSuwEvent" toVariant="@id/opened"/>
        <Transition onEvent="_System_ExitSuwEvent" toVariant="@id/closed"/>
    </Transitions>
</TaskPanel>

...

<Controller id="suw_panel_controller">
    <ControllerName>
        com.android.systemui.car.wm.scalableui.panel.controller.SetupPanelController
    </ControllerName>
    <PersistentPackage>com.android.car.mysetuppackage</PersistentPackage>
</Controller>

В соответствии со стандартным приложением SUW, если панель SUW становится невидимой во время настройки, контроллер отправляет явный сигнал «Домой» в приложение SUW, чтобы сообщить, что панель SUW скрыта.

Это решает проблемы, возникающие в случаях, когда SUW знал, что пользователь пытается скрыть SUW, обрабатывая домашний сигнал, но не имея доступа к домашнему сигналу из системы.

Если у вас другие ожидания от дизайна SUW, вы можете реализовать желаемое поведение, заменив SetupPanelController на пользовательский контроллер.