ผสานรวมวิซาร์ดการตั้งค่า

ในการแสดงเนื้อหาแบบขั้นสูง ฉากหน้าแรกประกอบด้วยแผงแอปหลายแผงที่มองเห็นได้พร้อมกันและโต้ตอบได้แทนที่จะเป็นกิจกรรมในบ้านที่เฉพาะเจาะจง การจัดหน้าต่างขั้นสูงจะใช้กิจกรรมในบ้านเวอร์ชันว่างเพื่อเป็นอุปสรรคด้านการมองเห็นสำหรับงานแบบหลายหน้าต่าง

แม้ว่ามักจะถือว่าวิซาร์ดการตั้งค่า (SUW) เป็นงานในบ้าน แต่เราขอแนะนำให้คุณ กำหนดค่า SUW เป็นส่วนหนึ่งของแผงเพื่อสร้างประสบการณ์การใช้งานบ้านที่สอดคล้องและเชื่อถือได้มากขึ้น

กำหนดค่าขอบเขตการมองเห็นบ้าน

ยืนยันว่ากิจกรรมที่กั้นการมองเห็นบ้านเป็นกิจกรรมในบ้านที่รับรู้การบูตโดยตรง ซึ่งมีลำดับความสำคัญสูงกว่าตัวกรอง Intent มากกว่ากิจกรรม 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 ด้วยตัวควบคุมที่กำหนดเอง