Mengimplementasikan UI Sistem

Android Automotive menyediakan UI Sistem baru yang dikembangkan khusus untuk kendaraan. Sebagian besar komponen UI Sistem terikat erat dengan layanan framework. UI Sistem mengacu pada elemen apa pun yang ditampilkan di layar yang bukan bagian dari aplikasi. UI Sistem Otomotif (dalam paket elemen CarSystemUI) adalah ekstensi dari UI Sistem Android (dalam paket UI Sistem), yang telah disesuaikan secara khusus untuk kendaraan.

Apa yang dimaksud dengan UI Sistem?

Komponen khusus untuk UI Sistem Otomotif mencakup:

Komponen Deskripsi
UI layar kunci Layar tempat pengguna diautentikasi ke akun pengguna tertentu.
Menu navigasi Panel sistem yang dapat diposisikan di kiri, bawah, atau kanan layar dan dapat menyertakan tombol aspek untuk navigasi ke berbagai aplikasi, mengalihkan panel notifikasi, dan memberikan kontrol kendaraan (seperti HVAC). Hal ini berbeda dengan implementasi UI Sistem Android, yang menyediakan tombol Kembali, Beranda, dan kelompok aplikasi.
Status bar Kolom sistem yang diposisikan di sepanjang layar dan berfungsi sebagai menu navigasi. Status bar juga menyediakan fungsi untuk mendukung:
  • Ikon konektivitas. Termasuk koneksi Bluetooth, Wi-Fi, dan Hotspot/Seluler.
  • Panel notifikasi tarik ke bawah. Misalnya, menggeser ke bawah dari bagian atas layar.
  • Notifikasi pendahuluan (HUN).
UI Sistem Mengacu pada elemen apa pun yang ditampilkan di layar yang bukan bagian dari aplikasi.
UI Pengalih Pengguna Layar tempat pengguna dapat memilih pengguna lain.
UI Volume Dialog yang ditampilkan saat pengemudi menggunakan tombol volume fisik untuk mengubah volume di perangkat.

Bagaimana cara kerja UI Sistem?

UI Sistem adalah aplikasi Android yang berjalan saat perangkat dinyalakan. Aplikasi dimulai melalui refleksi oleh SystemServer. Titik entri yang paling relevan untuk aspek UI Sistem yang terlihat pengguna tercantum di bawah. Gunakan komponen ini untuk menyesuaikan UI Sistem Android untuk kemampuan khusus Otomotif.

  • config_statusBarComponent
  • config_systemUIFactoryComponent

CarSystemUI adalah ekstensi dari paket UI Sistem, yang berarti class dan resource dalam paket UI Sistem dapat digunakan dan diganti oleh paket CarSystemUI.

Menyesuaikan UI Sistem

Overlay

Meskipun Anda dapat mengubah kode sumber Android untuk menyesuaikan UI Sistem, tindakan tersebut akan mempersulit dan memperumit penerapan update Android mendatang. Sebagai gantinya, Android mendukung penggunaan direktori overlay, yang memungkinkan Anda mengganti file resource tanpa mengubah kode sumber. Dalam sistem build Android, sistem overlay mengganti file dengan cara yang terkontrol. Semua file yang diubah diidentifikasi dengan jelas tanpa menelusuri seluruh hierarki kode sumber AOSP.

File overlay harus ditempatkan di direktori PRODUCT_PACKAGE_OVERLAYS dan harus memiliki subfolder yang sama persis dengan struktur root AOSP asli. Untuk Android 10 atau yang lebih tinggi, PRODUCT_PACKAGE_OVERLAYS disetel ke:

PRODUCT_PACKAGE_OVERLAYS := packages/services/Car/car_product/overlay

UI Sistem Otomotif menggunakan resource dari UI Sistem dan paket CarSystemUI, yang berarti resource dari setiap lokasi dapat diganti dengan overlay untuk memengaruhi tampilan dan nuansa UI Sistem Otomotif.

Untuk mengganti file, replikasi struktur direktori file yang diganti di direktori /overlay yang Anda tentukan, lalu sertakan penggantian di direktori tersebut. Misalnya, untuk mengganti:

frameworks/base/packages/CarSystemUI/res/layout/super_status_bar.xml

Tambahkan file super_status_bar.xml pengganti yang terletak di:

packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/

Untuk mengganti frameworks/base/packages/SystemUI/res/values/config.xml, (di UI Sistem, bukan CarSystemUI), tambahkan file config.xml pengganti ke:

packages/services/Car/car_product/overlay/frameworks/base/packages/SystemUI/res/layout/

atau

packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/

Deskripsi dua titik entri penyesuaian utama diberikan di bawah.

UI Sistem Otomotif dapat memiliki tiga menu navigasi di sebelah kiri, bawah, dan kanan layar. Visibilitas setiap panel sistem diaktifkan dengan konfigurasi berikut:

  • config_enableLeftSystemBar
  • config_enableBottomSystemBar
  • config_enableRightSystemBar

Setiap panel memiliki status yang disediakan dan tidak disediakan, yang dapat disesuaikan dengan menempatkan file tata letak masing-masing:

  • car_left_system_bar.xml
  • car_left_system_bar_unprovisioned.xml
  • car_system_bar.xml (tata letak untuk menu navigasi bawah)
  • car_system_bar_unprovisioned.xml
  • car_right_system_bar.xml
  • car_right_system_bar_unprovisioned.xml

Tata letak ini harus berisi com.android.systemui.car.systembar.CarSystemBarView di tingkat teratas, yang dapat menyertakan tampilan lain yang diperlukan. Tombol di dalam menu navigasi dapat disertakan menggunakan com.android.systemui.car.systembar.CarSystemBarButton.

Tampilan ini di-inflate di CarSystemBar#createSystemBar, jika perangkat disediakan dengan benar untuk pengguna tertentu.

Status bar

Pertimbangkan status bar sebagai menu navigasi dengan fungsi tambahan. Tidak seperti menu navigasi, status bar tidak memiliki tanda untuk menonaktifkannya. Anda dapat mengubah status bar dengan:

  • car_top_navigation_bar.xml
  • car_top_navigation_bar_unprovisioned.xml

Tata letak ini harus berisi com.android.systemui.statusbar.car.CarNavigationBarView di tingkat teratas. Status bar berisi ikon status. Untuk mengubah ukuran ikon, skalakan ikon secara merata dengan faktor skala, bukan menentukan ukuran tertentu. Misalnya, dalam file overlay /overlay/frameworks/base/packages/CarSystemUI/res/values/dimens.xml, tambahkan dimensi berikut untuk melipatgandakan ukuran ikon:

<resources>
    <!-- The amount by which to scale up the status bar icons.-->
    <item name="status_bar_icon_scale_factor" format="float" type="dimen">2</item>
</resources>

Status bar berada di lapisan jendela khusus yang juga mencakup panel notifikasi, pengalih pengguna, notifikasi peringatan (HUN), dan pelindung kunci. Berbagai tata letak untuk ini disertakan dalam super_status_bar.xml.

Perubahan kode sumber UI Sistem

Overlay mungkin tidak memberikan fleksibilitas yang diperlukan untuk menyesuaikan perilaku UI Sistem secara memadai.

Peringatan. Perubahan yang dilakukan pada kode sumber Android sulit diperbarui dalam rilis Android berikutnya. Sebaiknya Anda memperluas kode UI Sistem Otomotif bukan langsung memodifikasi kode. Dengan cara ini, kode sumber UI Sistem Otomotif yang mendasarinya dapat diupgrade dengan konflik penggabungan minimal karena semua penyesuaian diterapkan melalui platform API yang diketahui.

Sebagian besar aspek UI Sistem dapat disesuaikan melalui dua titik entri ini:

  • config_statusBarComponent
  • config_systemUIFactoryComponent

Misalnya, jika Anda membuat class bernama com.android.systemui.statusbar.car.custom.CustomCarStatusBar, yang memperluas CarStatusBar, perbarui config_statusBarComponent untuk mengarah ke komponen baru ini. Memperluas class ini memungkinkan penyesuaian sebagian besar elemen yang berkaitan dengan panel sistem dan logika notifikasi.

Demikian pula, Anda dapat membuat CustomCarSystemUIFactory dan menempatkannya di config_systemUIFactoryComponent. Gunakan class ini untuk mengupdate fungsi VolumeUI dan layar kunci.

Menyesuaikan peralihan dan pembukaan kunci pengguna

Materi berikut menjelaskan cara menyesuaikan pengalaman pengalihan pengguna.

Istilah Deskripsi
Keyguard Dialog layar penuh untuk mencegah interaksi yang tidak disengaja dengan aplikasi latar depan. Melindungi privasi setiap pengguna saat beberapa pengguna disiapkan.
Memuat dialog Layar pemuatan ditampilkan saat beralih antar-Pengguna.
Layar kunci, bouncer Layar yang mengharuskan pengguna memasukkan PIN, pola, atau sandi.
Pengguna Pengguna Android.
Pemilih pengguna Layar pemilih pengguna yang ditampilkan saat perangkat di-booting.
Pengalih pengguna Pengalih pengguna ditampilkan saat beralih layar dari SetelanCepat.

Menyesuaikan pengalihan pengguna

Keyguard dan bouncer

Di Android Automotive OS, layar Keyguard dengan pemilih pengguna hanya ditampilkan saat pengguna mengklik tombol Batal di layar kunci. Layar Pelindung Kunci ditampilkan di bawah.

Layar pelindung kunci

Gambar 1. Layar pelindung kunci

Lockscreen dengan bouncer ditampilkan saat pengguna telah memilih jenis privasi untuk membuka kunci perangkat, seperti yang ditunjukkan di bawah.

Lockscreen

Gambar 2. Layar kunci.

Jika kunci disetel untuk memicu daya secara manual, gunakan petunjuk berikut:

adb shell input keyevent 26

Pemilih pengguna

Layar pemilih pengguna ditampilkan saat perangkat yang terintegrasi dengan status bar UI Sistem dan Maps mobil dimulai ulang. Untuk mempelajari lebih lanjut, lihat FullscreenUserSwitcher.

Layar pemuatan

Gambar 3. Layar pemilih pengguna

Tata letak layar ini dapat disesuaikan di car_fullscreen_user_switcher.xml.

Layar pemuatan

Layar pemuatan ditampilkan setiap kali pengguna beralih, terlepas dari titik entri. Misalnya, melalui pemilih pengguna atau layar Setelan. Layar pemuatan merupakan bagian integral dari UI Sistem framework dan dipetakan ke class publik berjudul CarUserSwitchingDialog. Lihat Gambar 3 di atas untuk mengetahui contohnya.

Tema dapat disesuaikan dengan Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog.

Untuk menyiapkan pengguna Android, alur Wizard Penyiapan awal memungkinkan pengemudi menyiapkan nama pengguna untuk dirinya sendiri. Jika pengemudi kemudian mengaitkan pengguna Android dengan Akun Google, nama pengguna akan dipilih dari akun tersebut. Namun, jika pengemudi menentukan nama, misalnya DriverB, lalu kemudian mengaitkan nama pengguna tersebut ke Akun Google-nya dengan nama Maddy, nama yang awalnya ditetapkan (DriverB) tidak akan berubah karena nama tersebut ditetapkan secara eksplisit. Pengemudi hanya dapat mengubah nama di menu Setelan.

Tata letak dapat disesuaikan di car_user_switching_dialog.xml.

OEM dapat menyembunyikan status dan menu navigasi menggunakan tema bernama NoActionBar.Fullscreen. (Ini adalah UI Sistem asli, yang diperbarui untuk UI referensi mobil.) Untuk informasi selengkapnya, lihat Penyesuaian.

Meskipun OEM dapat menyediakan titik entri antarmuka pengguna untuk beralih pengguna, hasilnya terkadang tidak diinginkan. Jika hal ini terjadi:

  1. OEM membuat dan menampilkan layar pemuatan (atau dialog) kustom.
    • Khusus untuk UX, OEM meluncurkan layar pemuatan kustom saat pengguna memilih cara untuk beralih, yang dapat disembunyikan saat pengalihan pengguna selesai.
    • OEM harus menetapkan periode prioritas sesuai dengan preferensi mereka. Misalnya, jenis jendela dengan prioritas lebih tinggi. Prioritas prioritas tidak boleh melebihi Keyguard.
  2. OEM menetapkan config_customUserSwitchUi=true dalam config.xml framework inti seperti yang dijelaskan dalam config_customuserswitchui. Akibatnya, framework tidak menampilkan CarUserSwitchingDialog.

Menyesuaikan layar kunci

Lockscreen adalah bagian tak terpisahkan dari UI Sistem, yang dapat disesuaikan oleh OEM. Untuk menyesuaikan alur, mulai dengan frameworks/base/packages/CarSystemUI/.

Menyesuaikan penyiapan pengguna pertama kali

Wizard Penyiapan melakukan penyiapan pengguna pertama kali. Hal ini juga dapat disesuaikan. Anda dapat menggunakan UserManager API untuk membuat pengguna. Dalam beberapa kasus, hal ini dapat diterapkan di latar belakang, sehingga menyederhanakan proses Wizard Penyiapan.