DriverUI

UI cluster biasanya ditempatkan di belakang kemudi pada layar terpisah. OEM secara bertahap menggabungkan cluster dan IVI ke dalam satu tampilan. UI gabungan ini adalah DriverUI.

DriverUI

Gambar 1. DriverUI.

DriverUI adalah aplikasi sistem Android yang merender seluruh tampilan panel instrumen, tidak termasuk elemen peraturan atau yang relevan dengan keselamatan yang dirender oleh perender ketersediaan tinggi (HAR). DriverUI menampilkan informasi terkait pemutaran media, panggilan telepon, peta, navigasi, dan lainnya, serta menerapkan Desain Otomotif untuk Compose.

DriverUI sebagai aktivitas cluster default

DriverUI berjalan sebagai aplikasi cluster yang memiliki hak istimewa di Android dan AAOS akan memulainya secara otomatis.

AAOS menggunakan class ClusterHomeManager, yang juga disebut sebagai Cluster2, untuk membuat cluster instrumen. Class ini menentukan konfigurasi yang diperlukan untuk mengidentifikasi penerapan panel instrumen dan cara AAOS berinteraksi dengannya. Google menyediakan implementasi referensi Cluster2 API.

Platform

Anda dapat membuat dan menjalankan Display Safety di SDV. Platform kendaraan software-defined (SDV):

  • Memerlukan dua VM tamu.
  • Menjalankan HAR di Media SDV (juga dikenal sebagai VM booting cepat) di VM tamu.
  • Menjalankan DriverUI di VM IVI SDV tamu lain.
  • Menjalankan Pemantau Keamanan di VM Media SDV.

Arsitektur platform SDV

Gambar 2. Arsitektur platform SDV.

Menggabungkan output HAR dan DriverUI

HAR dan DriverUI menggunakan tampilan terpisah untuk merender UI-nya. Kedua output digabungkan dan muncul sebagai satu gambar ke DriverUI.

Untuk mencapai hal ini, HAR mengontrol transparansi area tempat output Android muncul berdasarkan pesan detak jantung dari DriverUI. Jika DriverUI tidak tersedia, HAR akan mendeteksi kurangnya detak jantung dan membuat area DriverUI menjadi buram serta menampilkan placeholder. Saat detak jantung diterima, placeholder akan dihapus dan area DriverUI akan disetel menjadi transparan.

Komposisi HAR dan DriverUI

Gambar 3. Komposisi HAR dan DriverUI.

DriverUI dan komunikasi HAR

DriverUI dan HAR berkomunikasi satu sama lain menggunakan remote procedure call (RPC). Pesan detak jantung adalah contoh data yang dikirim melalui saluran RPC dan terdiri dari stempel waktu sebagai salah satu kolomnya.

gRPC digunakan untuk RPC. Di SDV, komunikasi SDV menyediakan Klien Gateway SDV untuk menemukan dan membuat channel dari DriverUI ke HAR. Layanan gRPC menentukan file protocol buffer:


// Heartbeat.
rpc Heartbeat(HeartbeatRequest) returns (HeartbeatResponse) {}

// Document switched in the DriverUI.
rpc DocumentSwitched(DocumentSwitchedRequest) returns (DocumentSwitchedResponse) {}

// Document updated in the DriverUI. Unary RPC.
rpc DocumentUpdated(DocumentUpdatedRequest) returns (DocumentUpdatedResponse) {}

// Document updated in the DriverUI. Requests are streamed with each request
// containing a part of the document and the entire document is assembled from these
// chunks by the server.
rpc DocumentUpdatedStreaming(stream DocumentUpdatedRequest) returns (DocumentUpdatedResponse) {}

/// Request for HAR to change design tokens.
rpc DesignTokenUpdate(DesignTokenUpdateRequest) returns (DesignTokenUpdateResponse) {}

// Request to change the current locale used in HAR.
rpc LocaleUpdate(LocaleUpdateRequest) returns (LocaleUpdateResponse) {}

// Requests to swap a certain variant at a Figma node.
rpc ChangeVariant(ChangeVariantRequest) returns (ChangeVariantResponse) {}

// Requests to change the container (display/root node) configuration (dpi, size) in HAR.
rpc ChangeContainerConfiguration(ChangeContainerConfigurationRequest) returns (ChangeContainerConfigurationResponse) {}

Detail permintaan dan respons ada di sumber Keamanan Tampilan di packages/apps/Car/DriverUI/proto/driverui.proto di repositori kode sumber ub-automotive.

Di platform SDV, komunikasi SDV menyediakan SDV Gateway Client untuk menemukan dan membuat saluran gRPC dari DriverUI ke HAR.

Menjalankan perintah ini menggunakan terminal IVI akan mengirimkan komunikasi ke SDV Media, yang memicu pembaruan tema di seluruh cluster.

adb shell cmd car_service inject-key -d 1 9 # Purple Theme
adb shell cmd car_service inject-key -d 1 8 # Blue Theme

Komunikasi RPC untuk mengubah tema DriverUI dan HAR.

Gambar 4. Komunikasi RPC untuk mengubah tema DriverUI dan HAR.

Menampilkan informasi Media, Maps, dan Teleponi di cluster

Melalui komunikasi dengan IVI, DriverUI dapat menampilkan informasi untuk Media, Maps, dan Telepon dalam cluster referensi. Meskipun Media berfungsi sebagai status default dalam implementasi referensi, tampilan diperbarui berdasarkan layanan aktif sesuai dengan prioritas berikut:

  1. Maps
  2. Telepon
  3. Media

Sistem secara otomatis memprioritaskan untuk menampilkan navigasi Maps atau layanan Teleponi aktif daripada status Media default.

Berbagai status tampilan DriverUI diilustrasikan dalam gambar berikut:

DriverUI yang menampilkan bagian Media dan Telephony dalam cluster
lengkap.

Gambar 5. DriverUI menampilkan bagian Media dan Telephony dalam cluster penuh.

Integrasi Desain Otomotif untuk Compose

DriverUI menerapkan Desain Otomotif untuk Compose guna memungkinkan desain (Figma) ditampilkan dan diulang secara langsung dalam aplikasi Android. Integrasi ini menjembatani kesenjangan antara desain dan pengembangan dengan memungkinkan rendering dokumen desain di lingkungan runtime.

Mengakses aset desain

Dokumen Figma contoh untuk DriverUI adalah bagian dari codebase. Untuk mengakses dan mengubah desain ini:

  1. Luncurkan DriverUI dengan file desain DCF Desain Otomotif untuk Compose lokal dari packages/apps/Car/DriverUI/src/main/assets/figma/*.dcf.
  2. Cari file aset packages/apps/Car/DriverUI/src/main/assets/DriverUI.fig.
  3. Impor file ini ke Figma untuk melihat desain sumber atau membuat perubahan.

Versi Desain Otomotif untuk Compose

  • Gradle menggunakan versi Desain Otomotif untuk Compose yang ditentukan untuk designcompose di packages/apps/Car/libs/aaos-apps-gradle-project/gradle/libs.versions.toml.
  • Rilis Desain Otomotif untuk Compose tersedia di halaman rilis.

Konfigurasi update langsung

Desain Otomotif untuk Compose mendukung update langsung dalam mode pengembangan, sehingga perubahan yang dilakukan di Figma dapat langsung dirender di DriverUI. Hal ini memfasilitasi siklus pengujian cepat dan iterasi desain yang lebih cepat.

Jalankan perintah berikut untuk menyetel token Figma untuk DriverUI:

adb shell am startservice \
  -n "com.android.car.driverui/com.android.designcompose.ApiKeyService" \
  -a setApiKey \
  -e ApiKey $FIGMA_ACCESS_TOKEN \
  --user 0

Sinkronisasi dokumen desain VM ganda

Dalam penyiapan VM ganda, update desain harus diterapkan di seluruh batas untuk menjaga konsistensi.

  • DriverUI mengambil dokumen desain Figma terbaru dan mengirimkannya ke HAR menggunakan saluran komunikasi gRPC yang dijelaskan di halaman ini.
  • Hasilnya, cluster penuh akan diupdate dengan iterasi desain Figma terbaru, sehingga kedua VM tetap sinkron dengan sumber desain.

Update langsung dokumen desain dari Figma ke DriverUI dan
HAR.

Gambar 6. Update langsung dokumen desain dari Figma ke DriverUI dan HAR.

Mengamankan saluran gRPC

gRPC memiliki integrasi SSL dan TLS serta mendorong penggunaan SSL dan TLS untuk mengautentikasi server dan mengenkripsi semua data yang dipertukarkan antara klien dan server. Mekanisme opsional tersedia bagi klien untuk memberikan sertifikat untuk otentikasi bersama. Untuk mengetahui informasi selengkapnya tentang autentikasi gRPC, lihat Autentikasi.