Sistem Kullanıcı Arayüzü'nü uygulayın

Android Automotive, araçlar için özel olarak geliştirilmiş yeni bir Sistem Kullanıcı Arayüzü sağlar. Sistem Kullanıcı Arabiriminin çoğu bileşeni, çerçeve hizmetleriyle sıkı bir şekilde birleştirilmiştir. Sistem Kullanıcı Arayüzü , ekranda görüntülenen ve bir uygulamanın parçası olmayan herhangi bir öğeyi ifade eder. Otomotiv Sistemi Kullanıcı Arayüzü (CarSystemUI öğe paketinde), özellikle araçlar için özelleştirilmiş olan Android Sistem Kullanıcı Arayüzü'nün (SystemUI paketinde) bir uzantısıdır.

Sistem Kullanıcı Arayüzü nedir?

Otomotiv Sistemi kullanıcı arayüzüne özel bileşenler şunları içerir:

Bileşen Tanım
Kilit ekranı kullanıcı arayüzü Kullanıcıların belirli bir kullanıcı hesabında kimliklerinin doğrulandığı ekran.
Gezinti çubuğu Ekranın soluna, altına veya sağına yerleştirilebilen ve farklı uygulamalara gitmek, bildirim panelini değiştirmek ve araç kontrolleri (HVAC gibi) sağlamak için faset düğmeleri içerebilen sistem çubuğu. Bu, Geri, Ana Sayfa ve uygulama yığını düğmelerini sağlayan Android Sistem Kullanıcı Arayüzü uygulamasından farklıdır.
Durum çubuğu Ekran boyunca konumlandırılan ve bir gezinme çubuğu görevi gören sistem çubuğu. Durum Çubuğu ayrıca şunları desteklemek için işlevsellik sağlar:
  • Bağlantı simgeleri. Bluetooth, Wi-Fi ve Hotspot/Mobil bağlantı dahil.
  • Açılır bildirim paneli. Örneğin, ekranın üstünden aşağı doğru kaydırma.
  • Uyarı bildirimleri (HUN).
Sistem Kullanıcı Arayüzü Bir uygulamanın parçası olmayan ekranda görüntülenen herhangi bir öğeyi ifade eder.
Kullanıcı Değiştirici Kullanıcı Arayüzü Bir kullanıcının farklı bir kullanıcı seçebileceği ekran.
Birim kullanıcı arayüzü Sürücü, bir aygıttaki ses düzeyini değiştirmek için fiziksel ses düğmelerini kullandığında görüntülenen iletişim kutusu.

Sistem Kullanıcı Arayüzü nasıl çalışır?

Sistem Kullanıcı Arayüzü, bir cihaz açıldığında çalışan bir Android uygulamasıdır. Uygulama, SystemServer tarafından yansıtılarak başlatılır. Sistem Kullanıcı Arayüzü'nün kullanıcı tarafından görülebilen yönleri için en alakalı giriş noktaları aşağıda listelenmiştir. Android Sistem Kullanıcı Arayüzü'nü Otomotiv'e özgü yetenekler için özelleştirmek için bu bileşenleri kullanın.

  • config_statusBarComponent
  • config_systemUIFactoryComponent

CarSystemUI, SystemUI paketinin bir uzantısıdır, yani SystemUI paketindeki sınıflar ve kaynaklar CarSystemUI paketi tarafından kullanılabilir ve geçersiz kılınabilir.

Sistem Kullanıcı Arayüzünü Özelleştirme

bindirmeler

Sistem Kullanıcı Arayüzü'nü özelleştirmek için Android kaynak kodunu değiştirebilseniz de, bunu yapmak gelecekteki Android güncellemelerini uygulamayı daha zor ve karmaşık hale getirir. Bunun yerine Android, kaynak kodunu değiştirmeden kaynak dosyalarını değiştirmenize olanak tanıyan bir bindirme dizini kullanımını destekler. Android derleme sisteminde, bindirme sistemi dosyaları kontrollü bir şekilde geçersiz kılar. Değiştirilen tüm dosyalar, AOSP kaynak kodunun tüm ağacından geçilmeden açıkça tanımlanır.

Bindirme dosyaları PRODUCT_PACKAGE_OVERLAYS dizinine yerleştirilmelidir ve orijinal AOSP kök yapısıyla tam olarak aynı alt klasörlere sahip olmalıdır. Android 10 veya sonraki sürümler için PRODUCT_PACKAGE_OVERLAYS şu şekilde ayarlanmıştır:

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

Otomotiv Sistemi Kullanıcı Arayüzü, SystemUI ve CarSystemUI paketlerindeki kaynakları kullanır; bu, Otomotiv Sistemi Kullanıcı Arayüzü'nün görünüşünü ve hissini etkilemek için her bir konumdan gelen kaynakların bindirmelerle geçersiz kılınabileceği anlamına gelir.

Bir dosyayı değiştirmek için, değiştirilen dosyanın dizin yapısını belirttiğiniz /overlay dizininde çoğaltın ve ardından değiştirmeyi bu dizine ekleyin. Örneğin, değiştirmek için:

frameworks/base/packages/CarSystemUI/res/layout/super_status_bar.xml

Şurada bulunan yedek super_status_bar.xml dosyasını ekleyin:

packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/

frameworks/base/packages/SystemUI/res/values/config.xml öğesini değiştirmek için (CarSystemUI değil SystemUI'de), yedek config.xml dosyasını şuraya ekleyin:

packages/services/Car/car_product/overlay/frameworks/base/packages/SystemUI/res/layout/

veya ,

packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/

İki birincil özelleştirme giriş noktasının açıklamaları aşağıda verilmiştir.

Otomotiv Sistemi Kullanıcı Arayüzü, ekranın solunda, altında ve sağında üç gezinme çubuğuna sahip olabilir. Her sistem çubuğunun görünürlüğü aşağıdaki yapılandırmalarla değiştirilir:

  • config_enableLeftSystemBar
  • config_enableBottomSystemBar
  • config_enableRightSystemBar

Her çubuğun, ilgili düzen dosyalarının üst üste bindirilmesiyle özelleştirilebilen, sağlanmış ve hazırlanmamış bir durumu vardır:

  • car_left_system_bar.xml
  • car_left_system_bar_unprovisioned.xml
  • car_system_bar.xml (alt gezinme çubuğu düzeni)
  • car_system_bar_unprovisioned.xml
  • car_right_system_bar.xml
  • car_right_system_bar_unprovisioned.xml

Bu düzenler, diğer gerekli görünümleri içerebilen en üst düzeyde com.android.systemui.car.systembar.CarSystemBarView içermelidir. Gezinme çubuklarının içindeki düğmeler com.android.systemui.car.systembar.CarSystemBarButton kullanılarak dahil edilebilir.

Aygıt belirli bir kullanıcı için uygun şekilde sağlanmışsa, bu görünümler CarSystemBar#createSystemBar içinde şişirilir.

Durum çubuğu

Durum Çubuğunu ek işlevselliğe sahip bir gezinme çubuğu olarak düşünün. Gezinme çubuğunun aksine, Durum Çubuğu'nun devre dışı bırakmak için bir bayrağı yoktur. Durum Çubuğunu aşağıdakilerle değiştirebilirsiniz:

  • car_top_navigation_bar.xml
  • car_top_navigation_bar_unprovisioned.xml

Bu düzenler en üst düzeyde com.android.systemui.statusbar.car.CarNavigationBarView içermelidir. Durum Çubuğu, durum simgeleri içerir. Bir simgenin boyutunu değiştirmek için, belirli bir boyut belirtmek yerine simgeyi bir ölçek faktörü ile eşit olarak ölçeklendirin. Örneğin, bir bindirme dosyasında /overlay/frameworks/base/packages/CarSystemUI/res/values/dimens.xml , simgelerin boyutunu iki katına çıkarmak için aşağıdaki boyutları ekleyin:

<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>

Durum Çubuğu, bildirimler panelini, kullanıcı değiştiriciyi, baş bildirimlerini (HUN'lar) ve tuş korumasını da içeren özel bir pencere katmanında bulunur. Bunlar için çeşitli düzenler super_status_bar.xml içinde bulunur.

Sistem kullanıcı arabirimi kaynak kodu değişiklikleri

Kaplamalar, Sistem Kullanıcı Arabirimi davranışını yeterince özelleştirmek için gereken esnekliği sağlamayabilir.

Uyarı. Android kaynak kodunda yapılan değişikliklerin sonraki Android sürümlerinde güncellenmesi zor olacaktır. Kodu doğrudan değiştirmek yerine Otomotiv Sistemi UI kodunu genişletmeniz şiddetle önerilir. Bu şekilde, tüm özelleştirmeler bilinen API yüzeyleri aracılığıyla uygulandığından, temeldeki Otomotiv Sistemi UI kaynak kodu minimum birleştirme çakışmaları ile yükseltilebilir.

Sistem Kullanıcı Arayüzü'nün çoğu yönü şu iki giriş noktası aracılığıyla özelleştirilebilir:

  • config_statusBarComponent
  • config_systemUIFactoryComponent

Örneğin, CarStatusBar genişleten com.android.systemui.statusbar.car.custom.CustomCarStatusBar adlı bir sınıf oluşturursanız, bu yeni bileşeni işaret etmek için config_statusBarComponent öğesini güncelleyin. Bu sınıfın genişletilmesi, sistem çubuğuna ve bildirim mantığına ilişkin çoğu öğenin özelleştirilmesini sağlar.

Aynı şekilde CustomCarSystemUIFactory oluşturabilir ve onu config_systemUIFactoryComponent . VolumeUI ve kilit ekranının işlevselliğini güncellemek için bu sınıfı kullanın.

Kullanıcı değiştirmeyi ve kilit açmayı özelleştirin

Aşağıdaki materyal, kullanıcı değiştirme deneyiminin nasıl özelleştirileceğini açıklar.

Terim Tanım
tuş kilidi Ön plan uygulamasıyla yanlışlıkla etkileşimi önlemek için tam ekran iletişim kutusu. Birden çok kullanıcı kurulduğunda her kullanıcının gizliliğini korur.
İletişim kutusu yükleniyor Kullanıcılar arasında geçiş yaparken görüntülenen yükleme ekranı.
Kilit ekranı, fedai Bir kişinin PIN, desen veya şifre girmesini gerektiren ekran.
kullanıcı Android kullanıcısı.
kullanıcı seçici Bir cihaz başlatıldığında görüntülenen kullanıcı seçici ekranı.
kullanıcı değiştirici QuickSettings'den ekranlar arasında geçiş yaparken görüntülenen kullanıcı değiştirici.

Kullanıcı değiştirmeyi özelleştir

Tuş kilidi ve fedai

Android Automotive OS'de, Kullanıcı Seçicili Tuş Kilidi ekranı yalnızca bir kullanıcı kilit ekranında İptal düğmesini tıkladığında görüntülenir. Tuş Kilidi ekranı aşağıda gösterilmiştir.

Tuş kilidi ekranı

Şekil 1. Tuş kilidi ekranı

Kullanıcı, aşağıda gösterildiği gibi cihazın kilidini açmak için bir gizlilik türü seçtiğinde, fedai içeren bir kilit ekranı görüntülenir.

kilit ekranı

Şekil 2. Kilit ekranı.

Kilit, gücü açma veya kapatmayı manuel olarak tetikleyecek şekilde ayarlandığında, aşağıdaki talimatı kullanın:

adb shell input keyevent 26

kullanıcı seçici

Kullanıcı Seçici ekranı, aracın Sistem Kullanıcı Arayüzü Durum çubuğuna ve Haritalara entegre bir cihaz yeniden başlatıldığında görüntülenir. Daha fazla bilgi edinmek için bkz. FullscreenUserSwitcher .

Yükleme ekranı

Şekil 3. Yükleme ekranı

Bu ekranın düzeni, car_fullscreen_user_switcher.xml içinde özelleştirilebilir.

Yükleme ekranı

Giriş noktasından bağımsız olarak bir Kullanıcı değiştirildiğinde Yükleme ekranı görüntülenir. Örneğin, Kullanıcı Seçici veya Ayarlar ekranı aracılığıyla. Yükleme ekranı, çerçeve Sistem Kullanıcı Arabiriminin ayrılmaz bir parçasıdır ve CarUserSwitchingDialog başlıklı genel sınıfa eşlenir. Örnek için yukarıdaki Şekil 3'e bakın.

Tema, Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog ile özelleştirilebilir.

Android Kullanıcısını kurmak için, ilk Kurulum Sihirbazı akışı, sürücünün kendileri için bir Kullanıcı adı oluşturmasını sağlar. Sürücü daha sonra Android Kullanıcısını bir Google hesabıyla ilişkilendirirse, Kullanıcı adı bu hesaptan seçilir. Ancak, sürücü örneğin DriverB gibi bir ad belirtirse ve daha sonra bu Kullanıcı adını Google Hesabıyla Maddy adıyla ilişkilendirirse, bu ad açıkça ayarlandığından orijinal olarak atanan ad (DriverB) değiştirilmez. Sürücü, adı yalnızca Ayarlar menüsünde değiştirebilir.

Düzen, car_user_switching_dialog.xml .

OEM'ler, NoActionBar.Fullscreen adlı temayı kullanarak Durum ve Gezinme çubuğunu gizleyebilir. (Bu, araç referans kullanıcı arayüzü için güncellenen orijinal Sistem Kullanıcı Arayüzü'dür.) Daha fazla bilgi için, bkz. Özelleştirme .

OEM'ler, Kullanıcılar arasında geçiş yapmak için kullanıcı arabirimi giriş noktaları sağlayabilirken, sonuçlar bazen istenmeyen olabilir. Bu gerçekleşirse:

  1. OEM, özel yükleme ekranını (veya iletişim kutusunu) oluşturur ve görüntüler.
    • UX'e özel olarak OEM, bir kullanıcı geçiş yapma yöntemini seçtiğinde, kullanıcı geçişi tamamlandığında gizlenebilen özel yükleme ekranını başlatır.
    • OEM, öncelik penceresini tercihlerine göre ayarlamalıdır. Örneğin, daha yüksek öncelikli bir pencere türü. Öncelik önceliği, Tuş Korumasınınkini aşamaz .
  2. OEM, config_customuserswitchui içinde açıklandığı gibi config.xml çekirdek çerçevesinde config_customuserswitchui config_customUserSwitchUi=true ayarlar. Sonuç olarak, çerçeve CarUserSwitchingDialog göstermez .

Kilit ekranını özelleştirin

Kilit Ekranı, OEM tarafından özelleştirilebilen Sistem Kullanıcı Arayüzü'nün ayrılmaz bir parçasıdır. Akışı özelleştirmek için frameworks/base/packages/CarSystemUI/ ile başlayın.

İlk kez kullanıcı kurulumunu özelleştirin

Kurulum Sihirbazı, ilk Kullanıcı kurulumunu gerçekleştirir. Bu da özelleştirilebilir. Bir Kullanıcı oluşturmak için UserManager API'lerini kullanabilirsiniz. Bazı durumlarda bu, arka planda uygulanabilir ve böylece Kurulum Sihirbazı sürecini kolaylaştırır.