Kreator konfiguracji integracji

W przypadku zaawansowanego trybu okien domowa scena składa się z wielu paneli aplikacji, które są widoczne i interaktywne jednocześnie, a nie z określonej aktywności domowej. Zaawansowane okna wykorzystują pustą wersję aktywności domowej jako barierę widoczności w przypadku zadań w trybie wielu okien.

Chociaż Kreator konfiguracji (SUW) jest często traktowany jako zadanie domowe, zalecamy skonfigurowanie go w ramach panelu, aby zapewnić bardziej spójne i niezawodne działanie funkcji związanych z domem.

Konfigurowanie bariery widoczności domu

Sprawdź, czy aktywność bariery widoczności domu jest aktywnością domową, która jest bezpośrednio powiązana z uruchamianiem urządzenia i ma wyższy priorytet w przypadku filtra intencji domu niż aktywność SUW.

Więcej informacji znajdziesz na platformie referencyjnej w pakiecie StubCarLauncher. Zalecamy uwzględnienie tego pakietu w kompilacjach i zainstalowanie go na wszystkich urządzeniach użytkowników.

Konfigurowanie panelu SUW

Zalecamy umieszczenie SUW w osobnym panelu, aby obsługiwać unikalne warunki i umożliwiać umieszczanie go poza domyślnym zadaniem głównym. Możesz skonfigurować granice i warstwy tego panelu.

Aby SUW nie był zasłonięty, zalecamy umieszczenie go na stosunkowo wysokiej warstwie. Ten panel musi wyświetlać i ukrywać zdarzenia systemowe odpowiednio _System_EnterSuwEvent_System_ExitSuwEvent. Rozważ tę przykładową konfigurację:

<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>

Aby zachować zgodność z typową aplikacją SUW, jeśli panel SUW stanie się niewidoczny podczas konfiguracji, kontroler wyśle do aktywności SUW wyraźny sygnał powrotu do ekranu głównego, aby poinformować, że SUW jest ukryty.

Rozwiązuje to przypadki, w których SUW wiedział, że użytkownik próbuje ukryć SUW, korzystając z intencji dotyczącej domu, ale nie miał dostępu do sygnału dotyczącego domu z systemu.

Jeśli masz inne oczekiwania co do wyglądu SUW, możesz wdrożyć preferowane działanie, zastępując SetupPanelController niestandardowym kontrolerem.