Terapkan UI Sistem

Android Automotive menyediakan UI Sistem baru yang dikembangkan khusus untuk kendaraan. Sebagian besar komponen UI Sistem digabungkan erat dengan layanan kerangka kerja. UI Sistem mengacu pada elemen apa pun yang ditampilkan di layar yang bukan merupakan bagian dari aplikasi. UI Sistem Otomotif (dalam paket elemen CarSystemUI) adalah perpanjangan dari UI Sistem Android (dalam paket SystemUI), yang telah dikustomisasi khusus untuk kendaraan.

Apa itu UI Sistem?

Komponen khusus untuk UI Sistem Otomotif meliputi:

Komponen Keterangan
UI layar kunci Layar melalui mana pengguna diautentikasi ke akun pengguna tertentu.
Bilah Navigasi Bilah sistem yang dapat diposisikan di kiri, bawah, atau kanan layar dan yang dapat menyertakan tombol faset untuk navigasi ke berbagai aplikasi, mengaktifkan panel notifikasi, dan menyediakan kontrol kendaraan (seperti HVAC). Ini berbeda dengan implementasi UI Sistem Android, yang menyediakan tombol Kembali, Beranda, dan tumpukan aplikasi.
Status bar Bilah sistem diposisikan di sepanjang layar dan berfungsi sebagai bilah navigasi. Status Bar juga menyediakan fungsionalitas untuk mendukung:
  • Ikon konektivitas. Termasuk koneksi Bluetooth, Wi-Fi, dan Hotspot/Seluler.
  • Panel notifikasi tarik-turun. Misalnya, menggesek layar dari atas ke bawah.
  • Pemberitahuan awal (HUN).
Sistem UI Mengacu pada elemen apa pun yang ditampilkan di layar yang bukan merupakan bagian dari aplikasi.
UI Pengalih Pengguna Layar di mana pengguna dapat memilih pengguna yang berbeda.
Volume UI Dialog ditampilkan saat pengemudi menggunakan tombol volume fisik untuk mengubah volume pada perangkat.

Bagaimana cara kerja UI Sistem?

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

  • config_statusBarComponent
  • config_systemUIFactoryComponent

CarSystemUI adalah perpanjangan dari paket SystemUI, yang berarti bahwa kelas dan sumber daya dalam paket SystemUI dapat digunakan dan diganti oleh paket CarSystemUI.

Menyesuaikan UI Sistem

Hamparan

Meskipun Anda dapat memodifikasi kode sumber Android untuk menyesuaikan UI Sistem, hal itu akan membuat penerapan pembaruan Android di masa mendatang menjadi lebih sulit dan rumit. Sebagai gantinya, Android mendukung penggunaan direktori overlay, yang memungkinkan Anda mengganti file sumber daya tanpa mengubah kode sumber. Dalam sistem build Android, sistem overlay menimpa file dengan cara yang terkontrol. Semua file yang dimodifikasi diidentifikasi dengan jelas tanpa melintasi seluruh pohon kode sumber AOSP.

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

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

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

Untuk mengganti file, replika struktur direktori dari file yang diganti di direktori /overlay yang Anda tentukan dan kemudian sertakan penggantinya di direktori itu. 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 SystemUI, 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 dari dua titik masuk kustomisasi utama disediakan di bawah ini.

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

  • config_enableLeftSystemBar
  • config_enableBottomSystemBar
  • config_enableRightSystemBar

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

  • car_left_system_bar.xml
  • car_left_system_bar_unprovisioned.xml
  • car_system_bar.xml (tata letak untuk bilah 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 atas, yang dapat menyertakan tampilan lain yang diperlukan. Tombol di dalam bilah navigasi dapat disertakan menggunakan com.android.systemui.car.systembar.CarSystemBarButton .

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

Status bar

Pertimbangkan Bilah Status sebagai bilah navigasi dengan fungsionalitas tambahan. Berbeda dengan bilah navigasi, Bilah Status tidak memiliki tanda untuk menonaktifkannya. Anda dapat memodifikasi Bilah Status 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 atas. Status Bar berisi ikon status. Untuk mengubah ukuran ikon, skalakan ikon secara seragam dengan faktor skala alih-alih menentukan ukuran tertentu. Misalnya, dalam file overlay /overlay/frameworks/base/packages/CarSystemUI/res/values/dimens.xml , tambahkan dimensi berikut untuk menggandakan 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 windowing khusus yang juga mencakup panel notifikasi, pengalih pengguna, notifikasi kepala (HUN), dan keyguard. Berbagai tata letak untuk ini termasuk dalam super_status_bar.xml .

Perubahan kode sumber UI sistem

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

Peringatan. Perubahan yang dilakukan pada kode sumber Android akan sulit diperbarui di rilis Android selanjutnya. Sangat disarankan agar Anda memperluas kode UI Sistem Otomotif daripada langsung memodifikasi kode. Dengan cara ini, kode sumber UI Sistem Otomotif yang mendasarinya dapat ditingkatkan dengan konflik penggabungan yang minimal karena semua penyesuaian diimplementasikan melalui permukaan API yang diketahui.

Sebagian besar aspek UI Sistem dapat disesuaikan melalui dua titik masuk berikut:

  • config_statusBarComponent
  • config_systemUIFactoryComponent

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

Demikian juga, Anda dapat membuat CustomCarSystemUIFactory dan menempatkannya di config_systemUIFactoryComponent . Gunakan kelas ini untuk memperbarui fungsionalitas VolumeUI dan layar kunci.

Sesuaikan peralihan dan pembukaan kunci pengguna

Materi berikut menjelaskan cara menyesuaikan pengalaman peralihan pengguna.

Ketentuan Keterangan
Penjaga kunci Dialog layar penuh untuk mencegah interaksi yang tidak disengaja dengan aplikasi latar depan. Melindungi privasi setiap pengguna saat beberapa pengguna disiapkan.
Memuat dialog Memuat layar ditampilkan saat beralih di antara Pengguna.
Layar kunci, penjaga Layar yang mengharuskan seseorang memasukkan PIN, pola, atau kata sandi.
Pengguna pengguna Android.
pemilih pengguna Layar pemilih pengguna ditampilkan saat perangkat di-boot.
Pengalih pengguna Pengalih pengguna ditampilkan saat beralih layar dari QuickSettings.

Sesuaikan peralihan pengguna

Penjaga kunci dan penjaga

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

Layar pengaman tombol

Gambar 1. Layar pengaman tombol

Layar kunci dengan penjaga ditampilkan saat pengguna telah memilih jenis privasi untuk membuka kunci perangkat, seperti yang ditunjukkan di bawah ini.

Layar kunci

Gambar 2. Layar kunci.

Saat kunci diatur untuk memicu daya hidup atau mati secara manual, gunakan instruksi berikut:

adb shell input keyevent 26

pemilih pengguna

Layar User Picker ditampilkan saat perangkat terintegrasi dengan bilah Status UI Sistem mobil dan Maps di-boot ulang. Untuk mempelajari lebih lanjut, lihat FullscreenUserSwitcher .

Memuat layar

Gambar 3. Memuat layar

Tata letak layar ini dapat disesuaikan di car_fullscreen_user_switcher.xml .

Memuat layar

Layar Memuat ditampilkan setiap kali Pengguna dialihkan, terlepas dari titik masuknya. Misalnya, melalui User Picker atau layar Pengaturan. Layar Memuat merupakan bagian integral dari UI Sistem kerangka kerja dan memetakan ke kelas publik yang berjudul CarUserSwitchingDialog . Lihat Gambar 3 di atas untuk contoh.

Tema dapat disesuaikan dengan Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog .

Untuk menyiapkan Pengguna Android, alur Wizard Penyiapan awal memungkinkan pengemudi menyetel nama Pengguna untuk dirinya sendiri. Jika pengemudi kemudian mengaitkan Pengguna Android dengan akun Google, nama Pengguna dipilih dari akun itu. Namun, jika pengemudi menentukan nama, misalnya DriverB, dan kemudian mengaitkan nama Pengguna tersebut ke Akun Google mereka dengan nama Maddy, nama yang awalnya ditetapkan (DriverB) tidak berubah karena nama tersebut ditetapkan secara eksplisit. Pengemudi dapat mengubah nama pada menu Pengaturan saja.

Tata letak dapat disesuaikan di car_user_switching_dialog.xml .

OEM dapat menyembunyikan bilah Status dan Navigasi dengan menggunakan tema bernama NoActionBar.Fullscreen . (Ini adalah UI Sistem asli, diperbarui untuk UI referensi mobil.) Untuk informasi lebih lanjut, lihat Penyesuaian .

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

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

Sesuaikan layar kunci

Layar Kunci adalah bagian integral dari UI Sistem, yang dapat disesuaikan oleh OEM. Untuk menyesuaikan alur, mulailah dengan frameworks/base/packages/CarSystemUI/ .

Sesuaikan pengaturan pengguna pertama kali

Wizard Penyiapan melakukan penyetelan Pengguna pertama kali. Ini juga bisa disesuaikan. Anda dapat menggunakan API UserManager untuk membuat User. Dalam beberapa kasus, ini dapat diterapkan di latar belakang, sehingga menyederhanakan proses Wizard Penyiapan.