Wizard Penyiapan Integrasi

Dalam tampilan jendela lanjutan, layar utama terdiri dari beberapa panel aplikasi yang terlihat dan interaktif secara bersamaan, bukan aktivitas utama tertentu. Fitur multi-aplikasi lanjutan menggunakan versi kosong dari Activity layar utama sebagai penghalang visibilitas untuk tugas multi-aplikasi.

Meskipun Wizard Penyiapan (SUW) sering dianggap sebagai tugas rumah, sebaiknya Anda mengonfigurasi SUW sebagai bagian dari panel untuk menciptakan pengalaman Rumah yang lebih konsisten dan andal.

Mengonfigurasi penghalang visibilitas rumah

Pastikan aktivitas penghalang visibilitas layar utama adalah aktivitas layar utama yang kompatibel dengan booting langsung dan memiliki prioritas yang lebih tinggi untuk filter intent layar utama daripada aktivitas SUW.

Untuk mempelajari lebih lanjut, lihat platform referensi dalam paket StubCarLauncher. Sebaiknya sertakan paket ini dalam build Anda dan instal untuk semua pengguna.

Mengonfigurasi panel SUW

Sebaiknya tempatkan SUW di panel khusus untuk menangani kondisi unik dan memungkinkan penempatan khusus di luar tugas root default Anda dapat mengonfigurasi batas dan pelapisan panel ini.

Agar SUW tidak terhalang dari tampilan, sebaiknya tempatkan SUW di lapisan yang relatif tinggi. Panel ini harus menampilkan dan menyembunyikan peristiwa sistem _System_EnterSuwEvent dan _System_ExitSuwEvent. Perhatikan contoh konfigurasi berikut:

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

Untuk menyelaraskan dengan aplikasi SUW umum, jika panel SUW menjadi tidak terlihat saat penyiapan sedang berlangsung, pengontrol akan mengirim sinyal beranda eksplisit ke aktivitas SUW untuk mengumumkan bahwa SUW disembunyikan.

Hal ini mengatasi kasus saat SUW mengetahui bahwa pengguna sedang mencoba menyembunyikan SUW dengan menggunakan maksud rumah, tetapi tanpa memiliki akses ke sinyal rumah dari sistem.

Jika Anda memiliki ekspektasi yang berbeda untuk desain SUW, Anda dapat menerapkan perilaku yang diinginkan dengan mengganti SetupPanelController dengan pengontrol kustom.