Menerapkan 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) merupakan perpanjangan dari UI Sistem Android (dalam paket UI Sistem), yang telah dikustomisasi khusus untuk kendaraan.

Apa itu UI Sistem?

Komponen khusus untuk UI Sistem Otomotif meliputi:

Komponen Keterangan
UI layar kunci Layar tempat pengguna diautentikasi ke akun pengguna tertentu.
Bilah navigasi Bilah sistem yang dapat diposisikan di kiri, bawah, atau kanan layar dan 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. Bilah status juga menyediakan fungsionalitas untuk mendukung:
  • Ikon konektivitas. Termasuk Bluetooth, Wi-Fi, dan Hotspot/koneksi Seluler.
  • Panel notifikasi tarik-turun. Misalnya, menggesek layar dari atas ke bawah.
  • Pemberitahuan pendahuluan (HUN).
UI Sistem 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 lain.
UI Jilid Dialog ditampilkan ketika pengemudi menggunakan tombol volume fisik untuk mengubah volume pada perangkat.

Bagaimana cara kerja Sistem UI?

UI Sistem adalah aplikasi Android yang berjalan saat perangkat dihidupkan. Aplikasi ini dimulai melalui refleksi oleh SystemServer . Titik masuk 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 merupakan perpanjangan dari paket System UI, artinya kelas dan sumber daya dalam paket System UI dapat digunakan dan diganti oleh paket CarSystemUI.

Sesuaikan UI Sistem

Hamparan

Meskipun Anda dapat memodifikasi kode sumber Android untuk menyesuaikan UI Sistem, hal ini akan mempersulit penerapan pembaruan Android di masa mendatang. Sebaliknya, Android mendukung penggunaan direktori overlay, yang memungkinkan Anda mengganti file sumber daya tanpa mengubah kode sumber. Dalam sistem build Android, sistem overlay menimpa file secara terkendali. 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 subfolder yang sama persis dengan struktur root 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 UI Sistem 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, replikasi struktur direktori dari file yang diganti di direktori /overlay yang Anda tentukan lalu sertakan penggantinya 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 System UI, 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 masuk penyesuaian utama disediakan di bawah ini.

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

  • config_enableLeftSystemBar
  • config_enableBottomSystemBar
  • config_enableRightSystemBar

Setiap bilah memiliki status tersedia dan tidak disediakan, yang dapat dikustomisasi dengan menghamparkan 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 dimasukkan menggunakan com.android.systemui.car.systembar.CarSystemBarButton .

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

Status bar

Pertimbangkan bilah status sebagai bilah navigasi dengan fungsi tambahan. Berbeda dengan bilah navigasi, bilah status tidak memiliki tanda untuk menonaktifkannya. Anda dapat mengubah 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. Bilah status berisi ikon status. Untuk mengubah ukuran ikon, skalakan ikon secara seragam dengan faktor skala, bukan 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>

Bilah status berada di lapisan jendela khusus yang juga mencakup panel notifikasi, pengalih pengguna, notifikasi pendahuluan (HUN), dan pengaman tombol. Berbagai tata letak untuk ini disertakan dalam super_status_bar.xml .

Kode sumber UI sistem berubah

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

Peringatan. Perubahan yang dilakukan pada kode sumber Android sulit diperbarui pada rilis Android selanjutnya. Kami sangat menyarankan agar Anda memperluas kode UI Sistem Otomotif daripada memodifikasi kode secara langsung. Dengan cara ini, kode sumber UI Sistem Otomotif yang mendasarinya dapat ditingkatkan dengan konflik penggabungan yang minimal karena semua penyesuaian diterapkan melalui permukaan API yang dikenal.

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

  • config_statusBarComponent
  • config_systemUIFactoryComponent

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

Demikian pula, 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
Pengaman kunci Dialog layar penuh untuk mencegah interaksi yang tidak disengaja dengan aplikasi latar depan. Melindungi privasi setiap pengguna ketika beberapa pengguna diatur.
Memuat dialog Layar pemuatan ditampilkan saat beralih antar 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 berpindah layar dari QuickSettings.

Sesuaikan peralihan pengguna

Pengaman kunci dan penjaga

Di Android Automotive OS, layar Pengaman tombol dengan pemilih pengguna hanya ditampilkan saat pengguna mengeklik tombol Batal di layar kunci. Layar Pengaman Tombol ditampilkan di bawah.

Layar pengaman tombol

Gambar 1. Layar pengaman tombol

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

Layar kunci

Gambar 2. Layar kunci.

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

adb shell input keyevent 26

Pemilih pengguna

Layar pemilih pengguna ditampilkan ketika perangkat yang terintegrasi dengan bilah status UI Sistem mobil dan Peta di-boot ulang. Untuk mempelajari lebih lanjut, lihat FullscreenUserSwitcher .

Memuat layar

Gambar 3. Layar pemilih pengguna

Tata letak layar ini dapat dikustomisasi di car_fullscreen_user_switcher.xml .

Memuat layar

Layar pemuatan ditampilkan setiap kali pengguna dialihkan, terlepas dari titik masuknya. Misalnya, melalui pemilih pengguna atau layar Pengaturan. Layar pemuatan merupakan bagian integral dari kerangka UI Sistem dan memetakan ke kelas publik yang diberi judul CarUserSwitchingDialog . Lihat Gambar 3 di atas sebagai contoh.

Tema dapat dikustomisasi 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 mengaitkan nama pengguna tersebut ke Akun Google mereka dengan nama Maddy, nama awal yang ditetapkan (DriverB) tidak diubah karena nama tersebut ditetapkan secara eksplisit. Pengemudi hanya dapat mengubah nama pada menu Pengaturan.

Tata letak dapat disesuaikan di car_user_switching_dialog.xml .

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

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

  1. OEM membuat dan menampilkan layar pemuatan khusus (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, tipe jendela dengan prioritas lebih tinggi. Prioritas prioritas tidak boleh melebihi prioritas Keyguard.
  2. OEM menetapkan config_customUserSwitchUi=true dalam kerangka inti config.xml seperti yang dijelaskan dalam config_customuserswitchui . Akibatnya, kerangka kerja tidak menampilkan CarUserSwitchingDialog .

Sesuaikan layar kunci

Lockscreen merupakan bagian integral dari Sistem UI, yang dapat disesuaikan oleh OEM. Untuk menyesuaikan alurnya, mulailah dengan frameworks/base/packages/CarSystemUI/ .

Sesuaikan pengaturan pengguna pertama kali

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