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ı Arayüzünün çoğu bileşeni çerçeve hizmetleriyle sıkı bir şekilde bağlantılıdır. 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 (Sistem Kullanıcı Arayüzü 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ına kimlik doğrulamasının yapıldığı ekran.
Gezinti çubuğu Ekranın soluna, altına veya sağına yerleştirilebilen ve farklı uygulamalara gitmek için özel düğmeler içerebilen, bildirim panelinde geçiş yapabilen ve araç kontrolleri (HVAC gibi) sağlayabilen 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 gezinme çubuğu görevi gören sistem çubuğu. Durum çubuğu ayrıca aşağıdakileri destekleyecek işlevsellik sağlar:
  • Bağlantı simgeleri. Bluetooth, Wi-Fi ve Hotspot/Mobil bağlantısı dahil.
  • Açılan bildirim paneli. Örneğin ekranın üst kısmından aşağı doğru kaydırmak.
  • Heads up 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ü Kullanıcının farklı bir kullanıcı seçebileceği ekran.
Birim kullanıcı arayüzü Sürücü, bir aygıtın 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ıların görebileceği yönleri için en ilgili giriş noktaları aşağıda listelenmiştir. Android Sistem Kullanıcı Arayüzünü Otomotiv'e özgü yeteneklere göre özelleştirmek için bu bileşenleri kullanın.

  • config_statusBarComponent
  • config_systemUIFactoryComponent

CarSystemUI, Sistem Kullanıcı Arayüzü paketinin bir uzantısıdır; yani Sistem Kullanıcı Arayüzü 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ştirin

Kaplamalar

Sistem Kullanıcı Arayüzünü özelleştirmek için Android kaynak kodunu değiştirebilseniz de, bunu yapmak gelecekteki Android güncellemelerinin uygulanmasını 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 yer paylaşımı dizininin kullanımını destekler. Android derleme sisteminde, yer paylaşımı sistemi dosyaları kontrollü bir şekilde geçersiz kılar. Değiştirilen tüm dosyalar, AOSP kaynak kodu ağacının tamamından geçmeden açıkça tanımlanır.

Yer paylaşımı dosyaları PRODUCT_PACKAGE_OVERLAYS dizinine yerleştirilmeli ve orijinal AOSP kök yapısıyla tamamen aynı alt klasörlere sahip olmalıdır. Android 10 veya üzeri 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ü, Sistem Kullanıcı Arayüzü ve CarSystemUI paketlerinden gelen kaynakları kullanır; bu, Otomotiv Sistemi Kullanıcı Arayüzünün görünüşünü ve hissini etkilemek için her konumdaki kaynakların kaplamalarla 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 dizinine kopyalayı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

Şu konumda 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 değiştirmek için (Sistem kullanıcı arayüzünde, CarSystemUI'da değil ), yeni 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 ana ö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 sağlanmamış bir durumu vardır:

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

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

Cihaz belirli bir kullanıcı için uygun şekilde sağlanmışsa bu görünümler CarSystemBar#createSystemBar içinde artırılır.

Durum çubuğu

Durum çubuğunu ek işlevlere sahip bir gezinme çubuğu olarak düşünün. Gezinme çubuğunun aksine durum çubuğunda onu devre dışı bırakacak bir bayrak yoktur. Durum çubuğunu şununla 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 simgelerini içerir. Bir simgenin boyutunu değiştirmek için belirli bir boyut belirtmek yerine simgeyi bir ölçek faktörüyle eşit şekilde ölçeklendirin. Örneğin, /overlay/frameworks/base/packages/CarSystemUI/res/values/dimens.xml kaplama dosyasına, 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, bildirim panelini, kullanıcı değiştiriciyi, uyarı bildirimlerini (HUN'lar) ve tuş kilidini de içeren özel bir pencereleme katmanında bulunur. Bunlara ilişkin çeşitli düzenler super_status_bar.xml dosyasında bulunmaktadır.

Sistem kullanıcı arayüzü kaynak kodu değişiklikleri

Kaplamalar, Sistem Kullanıcı Arayüzü davranışını yeterince özelleştirmek için gereken esnekliği sağlayamayabilir.

Uyarı. Android kaynak kodunda yapılan değişikliklerin Android'in sonraki sürümlerinde güncellenmesi zordur. Kodu doğrudan değiştirmek yerine Otomotiv Sistemi Kullanıcı Arayüzü kodunu genişletmenizi önemle tavsiye ederiz. Bu şekilde, tüm özelleştirmeler bilinen API yüzeyleri aracılığıyla uygulandığından, temel Otomotiv Sistemi kullanıcı arayüzü kaynak kodu minimum birleştirme çakışması ile yükseltilebilir.

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

  • config_statusBarComponent
  • config_systemUIFactoryComponent

Örneğin, com.android.systemui.statusbar.car.custom.CustomCarStatusBar adında CarStatusBar genişleten bir sınıf oluşturursanız, config_statusBarComponent öğesini bu yeni bileşeni işaret edecek şekilde 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.

Benzer şekilde, CustomCarSystemUIFactory oluşturabilir ve onu config_systemUIFactoryComponent içine yerleştirebilirsiniz. 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çıklamaktadır.

Terim Tanım
Tuş kilidi Ön plandaki uygulamayla yanlışlıkla etkileşimi önlemek için tam ekran iletişim kutusu. Birden fazla kullanıcı kurulduğunda her kullanıcının gizliliğini korur.
Yükleme iletişim kutusu Kullanıcılar arasında geçiş yaparken görüntülenen yükleme ekranı.
Kilit ekranı, fedai Kişinin PIN, desen veya şifre girmesini gerektiren ekran.
Kullanıcı Android kullanıcısı.
Kullanıcı seçici Bir aygıt başlatıldığında görüntülenen kullanıcı seçme ekranı.
Kullanıcı değiştirici QuickSettings'ten ekranlar arasında geçiş yaparken görüntülenen kullanıcı değiştirici.

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

Tuş kilidi ve fedai

Android Automotive OS'de, kullanıcı seçicili Tuş Kilidi ekranı yalnızca kullanıcı kilit ekranındaki İptal düğmesini tıklattığı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, güvenlik korumasını içeren bir kilit ekranı görüntülenir.

Kilit ekranı

Şekil 2. Kilit ekranı.

Kilit, gücü manuel olarak açıp kapatacak şekilde ayarlandığında aşağıdaki talimatı kullanın:

adb shell input keyevent 26

Kullanıcı seçici

Kullanıcı seçme 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 FullscreenUserSwitcher bakın.

Yükleme ekranı

Şekil 3. Kullanıcı seçme ekranı

Bu ekranın düzeni car_fullscreen_user_switcher.xml dosyasında özelleştirilebilir.

Yükleme ekranı

Yükleme ekranı, giriş noktasına bakılmaksızın kullanıcı değiştiğinde görüntülenir. Örneğin, kullanıcı seçici veya Ayarlar ekranı aracılığıyla. Yükleme ekranı, çerçeve Sistem Kullanıcı Arayüzü'nün ayrılmaz bir parçasıdır ve CarUserSwitchingDialog başlıklı genel sınıfla eşleşir. Ö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ı ayarlamak için ilk Kurulum Sihirbazı akışı, sürücünün kendisi için bir kullanıcı adı ayarlamasına olanak tanır. Sürücü daha sonra Android kullanıcısını bir Google hesabıyla ilişkilendirirse kullanıcı adı o hesaptan seçilir. Ancak sürücü bir ad belirtirse (örneğin SürücüB) ve daha sonra bu kullanıcı adını Maddy adıyla Google Hesabıyla ilişkilendirirse, başlangıçta atanan ad (SürücüB) bu ad açıkça ayarlandığından değişmez. Sürücü adı yalnızca Ayarlar menüsünden değiştirebilir.

Düzen car_user_switching_dialog.xml .

OEM'ler NoActionBar.Fullscreen adlı temayı kullanarak durumu 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ı değiştirmek için kullanıcı arayüzü giriş noktaları sağlayabilirken, sonuçlar bazen istenmeyen olabilir. Bu meydana gelirse:

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

Kilit ekranını özelleştirin

Kilit Ekranı, Sistem Kullanıcı Arayüzü'nün OEM tarafından özelleştirilebilen 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 kez 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 uygulanarak Kurulum Sihirbazı süreci kolaylaştırılabilir.