DriverUI

Küme kullanıcı arayüzü, geleneksel olarak direksiyonun arkasında ayrı bir ekranda yer alır. OEM'ler, küme ile IVI'yi kademeli olarak tek bir ekranda birleştirir. Bu birleştirilmiş kullanıcı arayüzü, DriverUI'dır.

DriverUI

Şekil 1. DriverUI.

DriverUI, yüksek kullanılabilirlik oluşturucu (HAR) tarafından oluşturulan güvenlikle ilgili veya düzenleyici öğeler hariç olmak üzere, tüm gösterge paneli ekranını oluşturan bir Android sistem uygulamasıdır. DriverUI; medya oynatma, telefon görüşmeleri, haritalar, navigasyon ve daha fazlasıyla ilgili bilgileri gösterir ve Automotive Design for Compose'u uygular.

Varsayılan küme etkinliği olarak DriverUI

DriverUI, Android'de ayrıcalıklı bir küme uygulaması olarak çalışır ve AAOS, DriverUI'yı otomatik olarak başlatır.

AAOS, gösterge panellerini oluşturmak için ClusterHomeManager sınıfını (Cluster2 olarak da bilinir) kullanır. Bu sınıf, gösterge paneli uygulamasını tanımlamak için gereken yapılandırmayı ve AAOS'nin bu uygulamayla nasıl etkileşime girdiğini belirtir. Google, Cluster2 API'lerinin referans uygulamalarını sağlar.

Platformlar

SDV'de Görüntülü Reklam Güvenliği'ni oluşturup çalıştırabilirsiniz. Yazılım tanımlı araç (SDV) platformu:

  • İki misafir sanal makinesi gerektirir.
  • HAR'ı, konuk sanal makinede SDV Media'da (hızlı önyükleme sanal makinesi olarak da bilinir) çalıştırır.
  • DriverUI'yı başka bir konuk SDV IVI VM'sinde çalıştırır.
  • SDV Media VM'de Güvenlik Monitörü'nü çalıştırır.

SDV platform mimarisi

Şekil 2. SDV platform mimarisi.

HAR ve DriverUI çıkışını karıştırma

HAR ve DriverUI, kullanıcı arayüzlerini oluşturmak için ayrı ekranlar kullanır. İki çıkış birleştirilir ve sürücü kullanıcı arayüzünde tek bir resim olarak görünür.

Bunu sağlamak için HAR, Android çıkışının göründüğü alanların şeffaflığını DriverUI'dan gelen kalp atışı iletilerine göre kontrol eder. DriverUI kullanılamadığında HAR, kalp atışlarının olmadığını algılar ve DriverUI alanlarını opak hale getirip yer tutucular gösterir. Kalp atışları alındığında yer tutucular kaldırılır ve DriverUI alanları şeffaf olacak şekilde ayarlanır.

HAR ve DriverUI kompozisyonu

Şekil 3. HAR ve DriverUI kompozisyonu.

DriverUI ve HAR iletişimi

DriverUI ve HAR, uzak prosedür çağrılarını (RPC'ler) kullanarak birbirleriyle iletişim kurar. Kalp atışı mesajı, RPC kanalı üzerinden gönderilen verilere bir örnektir ve alanlarından biri olarak zaman damgasını içerir.

RPC'ler için gRPC kullanılır. SDV'de SDV iletişimi, DriverUI'dan HAR'a bir kanal keşfetmek ve oluşturmak için SDV Gateway Client'ı sağlar. gRPC hizmeti, bir protokol arabellek dosyası tanımlar:


// 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) {}

İstek ve yanıt ayrıntıları, ub-automotive kaynak kodu deposundaki packages/apps/Car/DriverUI/proto/driverui.proto konumunda bulunan Display Safety kaynağında yer alır.

SDV platformunda SDV comms, DriverUI'dan HAR'a gRPC kanalı keşfetmek ve oluşturmak için SDV Gateway Client'ı sağlar.

Bu komutları IVI terminalini kullanarak yürütmek, SDV Media'ya iletişim gönderir ve kümenin tamamında tema güncellemelerini tetikler.

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

Hem DriverUI hem de HAR temasını değiştirmek için RPC iletişimi.

Şekil 4. Hem DriverUI hem de HAR temasını değiştirmek için RPC iletişimi.

Kümede Görüntülü Reklam Ağı, Haritalar ve Telefon Bilgileri'ni görüntüleme

IVI ile iletişim kuran DriverUI, referans kümesi içinde Medya, Haritalar ve Telefon görüşmesi ile ilgili bilgileri gösterebilir. Medya, referans uygulamada varsayılan durum olarak kullanılsa da ekran, etkin hizmetlere göre aşağıdaki öncelik sırasına göre güncellenir:

  1. Haritalar
  2. Telefon
  3. Medya

Sistem, varsayılan medya durumuna kıyasla Haritalar navigasyonunu veya etkin telefon hizmetlerini göstermeye otomatik olarak öncelik verir.

Çeşitli DriverUI ekran durumları aşağıdaki şekilde gösterilmektedir:

Sürücü kullanıcı arayüzü, tam kümede Medya ve Telefon bölümünü gösteriyor.

Şekil 5. Sürücü kullanıcı arayüzü, tam kümede Medya ve Telefon bölümünü gösteriyor.

Compose entegrasyonu için otomotiv tasarımı

DriverUI, tasarımların (Figma) doğrudan Android uygulamasında gösterilmesine ve üzerinde yinelemeler yapılmasına olanak tanımak için Automotive Design for Compose'u uygular. Bu entegrasyon, tasarım belgelerinin çalışma zamanı ortamında oluşturulmasını sağlayarak tasarım ve geliştirme arasındaki boşluğu kapatır.

Tasarım öğelerine erişme

DriverUI için örnek Figma belgeleri, kod tabanının bir parçasıdır. Bu tasarımlara erişmek ve bunları değiştirmek için:

  1. packages/apps/Car/DriverUI/src/main/assets/figma/*.dcf konumundaki Compose DCF tasarım dosyası için yerel Automotive Design ile DriverUI'yı başlatın.
  2. packages/apps/Car/DriverUI/src/main/assets/DriverUI.fig öğe dosyasını bulun.
  3. Kaynak tasarımları görüntülemek veya değişiklik yapmak için bu dosyayı Figma'ya aktarın.

Oluşturma sürümü için otomotiv tasarımı

  • Gradle, designcompose için packages/apps/Car/libs/aaos-apps-gradle-project/gradle/libs.versions.toml içinde belirtilen Automotive Design for Compose sürümünü kullanır.
  • Compose için Otomotiv Tasarımı sürümlerini sürümler sayfasında bulabilirsiniz.

Canlı güncelleme yapılandırması

Compose için Otomotiv Tasarımı, geliştirme modunda canlı güncellemeleri destekleyerek Figma'da yapılan değişikliklerin DriverUI'da anında oluşturulmasına olanak tanır. Bu sayede hızlı test ve daha hızlı tasarım yineleme döngüleri kolaylaşır.

DriverUI için Figma jetonunu ayarlamak üzere aşağıdaki komutu çalıştırın:

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

Çift sanal makine tasarım belgesi senkronizasyonu

Çift sanal makine kurulumunda, tutarlılığı korumak için tasarım güncellemelerinin sınırlar arasında yayılması gerekir.

  • DriverUI, en son Figma tasarım belgesini getirir ve bu sayfada ayrıntılı olarak açıklanan gRPC iletişim kanallarını kullanarak HAR'a iletir.
  • Sonuç olarak, kümenin tamamı en yeni Figma tasarım yinelemeleriyle güncellenir ve her iki sanal makine de tasarım kaynağıyla senkronize edilir.

Tasarım belgesinin Figma'dan DriverUI ve HAR'a canlı olarak güncellenmesi.

Şekil 6. Tasarım belgesinin Figma'dan DriverUI ve HAR'a canlı olarak güncellenmesi.

gRPC kanalının güvenliğini sağlama

gRPC'de SSL ve TLS entegrasyonu vardır. Sunucunun kimliğini doğrulamak ve istemci ile sunucu arasında değiştirilen tüm verileri şifrelemek için SSL ve TLS kullanımını destekler. İstemcilerin karşılıklı kimlik doğrulama için sertifika sağlamasına yönelik isteğe bağlı mekanizmalar mevcuttur. gRPC kimlik doğrulaması hakkında daha fazla bilgi için Kimlik doğrulama başlıklı makaleyi inceleyin.