整合設定精靈

在進階視窗模式中,主畫面是由多個可同時顯示且可互動的應用程式面板組成,而非特定主畫面活動。進階視窗功能會使用空白版本的首頁活動,做為多視窗工作的可見度屏障

雖然設定精靈 (SUW) 通常視為居家工作,但我們建議您將 SUW 設定為面板的一部分,以建立更一致且可靠的居家體驗。

設定住家可見度屏障

確認住家可見度屏障活動是直接啟動的住家活動,且住家意圖篩選器的優先順序高於 SUW 活動。

詳情請參閱 StubCarLauncher 套件中的參考平台。建議您在建構作業中加入這個套件,並為所有使用者安裝。

設定 SUW 面板

建議您將 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 替換為自訂控制器,實作偏好的行為。