Mengimplementasikan UI Sistem

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

Apa itu UI Sistem?

Komponen khusus untuk UI Sistem Otomotif meliputi:

Komponen Deskripsi
UI layar kunci Menyaring di mana pengguna diautentikasi ke akun pengguna tertentu.
Menu navigasi {i>System bar<i} yang dapat diposisikan di sebelah kiri, bawah, atau kanan layar dan dapat menyertakan tombol {i>facet<i} untuk navigasi ke berbagai aplikasi, beralih panel notifikasi, dan menyediakan kontrol kendaraan (seperti HVAC). Ini berbeda dengan UI Sistem Android , yang menyediakan tombol Kembali, Beranda, dan stack aplikasi.
Status bar Bilah sistem diposisikan di sepanjang layar dan berfungsi sebagai bilah navigasi. Tujuan status bar juga menyediakan fungsi untuk mendukung:
  • Ikon konektivitas. Termasuk Bluetooth, Wi-Fi, dan Hotspot/Koneksi seluler.
  • Panel notifikasi pulldown. Misalnya, menggeser ke bawah dari bagian atas layar.
  • Notifikasi peringatan dini (HUN).
UI Sistem Mengacu pada elemen apa pun yang ditampilkan di layar yang bukan bagian dari aplikasi.
UI Pengalih Pengguna Penyaringan yang digunakan pengguna untuk memilih pengguna yang berbeda.
UI Volume Dialog yang ditampilkan saat pengemudi menggunakan tombol volume fisik untuk mengubah volume pada perangkat seluler.

Bagaimana cara kerja UI Sistem?

UI Sistem adalah aplikasi Android yang berjalan saat perangkat dinyalakan. Tujuan aplikasi dimulai melalui refleksi oleh SystemServer. Titik entri 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 Automotive.

  • config_statusBarComponent
  • config_systemUIFactoryComponent

{i>CarSystemUI<i} adalah ekstensi dari paket UI {i>System<i}, yang berarti bahwa kelas dan resource dalam paket UI Sistem dapat digunakan dan diganti oleh paket CarSystemUI.

Menyesuaikan UI Sistem

Overlay

Meskipun Anda dapat memodifikasi kode sumber Android untuk menyesuaikan UI Sistem, melakukannya akan membuat penerapan update Android mendatang menjadi lebih sulit dan rumit. Sebagai gantinya, Android mendukung penggunaan direktori overlay, yang memungkinkan Anda mengganti file sumber daya tanpa memodifikasi kode sumber. Dalam sistem build Android, sistem overlay mengganti file dalam terkendali. Semua file yang diubah diidentifikasi dengan jelas tanpa melintasi seluruh kode sumber AOSP yang baru.

File overlay harus ditempatkan dalam direktori PRODUCT_PACKAGE_OVERLAYS dan harus memiliki sub-folder yang sama persis dengan struktur {i>root <i}AOSP asli. Untuk Android 10 atau lebih tinggi, PRODUCT_PACKAGE_OVERLAYS ditetapkan ke:

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

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

Untuk mengganti file, replikasikan struktur direktori dari file yang diganti di /overlay yang Anda tentukan, lalu sertakan pengganti di direktori tersebut saat ini. 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 dari dua titik entri penyesuaian utama diberikan di bawah ini.

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

  • config_enableLeftSystemBar
  • config_enableBottomSystemBar
  • config_enableRightSystemBar

Setiap batang memiliki status disediakan dan tidak disediakan, yang dapat disesuaikan dengan 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 termasuk tampilan lain yang diperlukan. Tombol di dalam bilah navigasi dapat disertakan menggunakan com.android.systemui.car.systembar.CarSystemBarButton.

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

Status bar

Pertimbangkan status bar sebagai menu navigasi dengan fungsi tambahan. Berbeda dengan navigasi, status bar tidak memiliki penanda 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 seragam dengan faktor skala alih-alih menentukan ukuran tertentu. Misalnya, dalam sebuah {i>overlay<i} file /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 menyertakan panel notifikasi, pengalih pengguna, notifikasi peringatan dini (HUN), dan pengaman tombol. Berbagai {i>layout<i} untuk ini termasuk dalam super_status_bar.xml.

Perubahan kode sumber UI sistem

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

Waspada. Perubahan yang dibuat pada kode sumber Android sulit untuk diupdate dalam rilis Android berikutnya. Sebaiknya Anda memperluas kode UI Automotive System alih-alih langsung memodifikasi kode. Dengan cara ini, kode sumber UI Automotive System dapat diupgrade dengan konflik penggabungan minimal karena semua penyesuaian diimplementasikan melalui platform API yang dikenal.

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 ke titik ke komponen baru ini. Memperluas class ini memungkinkan penyesuaian sebagian besar elemen yang berhubungan ke bilah 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.

Sesuaikan pengalihan dan pembukaan kunci pengguna

Materi berikut menjelaskan cara menyesuaikan pengalaman peralihan 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 yang ditampilkan saat beralih antar-Pengguna.
Layar kunci, pemantul Layar mengharuskan seseorang memasukkan PIN, pola, atau sandi.
Pengguna pengguna Android.
Pemilih pengguna Layar pemilih pengguna ditampilkan saat perangkat di-booting.
Pengalih pengguna Pengalih pengguna ditampilkan saat beralih layar dari QuickSettings.

Menyesuaikan peralihan pengguna

Keyguard dan bouncer

Di Android Automotive OS, layar Keyguard dengan alat pilih pengguna hanya ditampilkan ketika pengguna mengeklik tombol {i>Cancel<i} (Pembatalan) di layar kunci. Layar Keyguard ditampilkan di bawah ini.

Layar keyguard

Gambar 1. Layar keyguard

Layar kunci dengan pantulan ditampilkan ketika pengguna memilih jenis privasi membuka kunci perangkat, seperti yang ditunjukkan di bawah ini.

Layar kunci

Gambar 2. Layar kunci.

Jika kunci disetel untuk mengaktifkan atau menonaktifkan daya secara manual, gunakan petunjuk berikut:

adb shell input keyevent 26

Pemilih pengguna

Layar pemilih pengguna ditampilkan saat perangkat terintegrasi dengan status bar UI Sistem mobil dan Maps 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 dialihkan, terlepas dari titik entrinya. Sebagai misalnya, melalui pemilih pengguna atau layar {i>Settings<i}. Layar pemuatan integral dari UI Sistem framework dan memetakan ke class publik yang berjudul CarUserSwitchingDialog. Lihat Gambar 3 di atas sebagai contoh.

Tema dapat disesuaikan dengan Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog.

Untuk menyiapkan pengguna Android, alur Wizard Penyiapan awal memungkinkan driver menyiapkan pengguna nama untuk mereka sendiri. Jika pengemudi lalu mengaitkan pengguna Android dengan Akun Google, nama dipilih dari akun tersebut. Namun, jika {i>driver<i} menentukan nama, misalnya {i>DriverB<i}, 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 di menu Setelan saja.

Tata letak dapat disesuaikan di car_user_switching_dialog.xml.

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

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

  1. OEM membuat dan menampilkan layar pemuatan kustom (atau dialog).
    • Khusus untuk UX, OEM meluncurkan layar pemuatan kustom saat pengguna memilih cara {i>switch<i}, yang dapat disembunyikan ketika pengalihan pengguna selesai.
    • OEM harus menetapkan prioritas jendela sesuai dengan preferensi mereka. Misalnya, jenis jendela dengan prioritas lebih tinggi. Prioritas prioritas tidak boleh melebihi Keyguard.
  2. OEM menetapkan config_customUserSwitchUi=true dalam framework inti config.xml seperti yang dijelaskan dalam config_customuserswitchui. Sebagai seorang hasilnya, kerangka kerja tidak menampilkan CarUserSwitchingDialog.

Menyesuaikan layar kunci

Layar Kunci adalah bagian integral 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 gunakan UserManager API untuk membuat pengguna. Dalam beberapa kasus, hal ini dapat diimplementasikan di latar belakang, sehingga merampingkan proses Wizard Penyiapan.