Sistem kullanıcı arayüzünü uygulayın

Android Automotive, özel olarak araçlar için 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ğlıdır. Sistem kullanıcı arayüzü, ekranda gösterilen ve bir uygulamanın parçası olmayan tüm öğeleri ifade eder. Automotive sistem kullanıcı arayüzü (CarSystemUI öğe paketinde), Android sistem kullanıcı arayüzünün (Sistem kullanıcı arayüzü paketinde) özel olarak araçlar için özelleştirilmiş bir uzantısıdır.

Sistem kullanıcı arayüzü nedir?

Otomotiv sistemi kullanıcı arayüzüne özgü bileşenler şunlardır:

Bileşen Açıklama
Kilit ekranı kullanıcı arayüzü Belirli bir kullanıcı hesabında kimlik doğrulaması yapılan kullanıcıları görüntüleyin.
Gezinme çubuğu Ekranın sol, alt veya sağ tarafına yerleştirilebilen ve farklı uygulamalara gitmek, bildirim panelini açmak ve araç kontrolleri (HVAC gibi) sağlamak için yön düğmeleri içerebilen sistem çubuğu. Bu, Geri, Ana Sayfa ve uygulama yığını düğmelerini sağlayan Android Sistem Arayüzü uygulamasından farklıdır.
Durum çubuğu Ekran boyunca konumlandırılmış ve gezinme çubuğu işlevi gören sistem çubuğu. Durum çubuğu, aşağıdakileri destekleyen işlevler de sunar:
  • Bağlantı simgelerini görebilirsiniz. Bluetooth, kablosuz bağlantı ve hotspot/mobil bağlantı dahildir.
  • Açılır bildirim paneli. Örneğin, ekranın üst kısmından aşağı doğru kaydırın.
  • Önemli bildirim (HUN).
Sistem kullanıcı arayüzü Ekranda gösterilen ve bir uygulamanın parçası olmayan tüm öğeleri ifade eder.
Kullanıcı Değiştirici kullanıcı arayüzü Kullanıcının farklı bir kullanıcı seçebileceği ekran.
Ses düzeyi kullanıcı arayüzü Sürücü, cihazdaki sesi 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ü, cihaz açıldığında çalışan bir Android uygulamasıdır. Uygulama, SystemServer tarafından yansıtma yoluyla başlatılır. Sistem kullanıcı arayüzünün kullanıcı tarafından görülebilen yönleriyle en alakalı giriş noktaları aşağıda listelenmiştir. Android sistem kullanıcı arayüzünü Automotive'ye özgü özellikler için özelleştirmek üzere bu bileşenleri kullanın.

  • config_statusBarComponent
  • config_systemUIFactoryComponent

CarSystemUI, Sistem UI paketinin bir uzantısıdır. Bu, Sistem UI paketindeki sınıf ve kaynakların CarSystemUI paketi tarafından kullanılabileceği ve geçersiz kılınabileceği anlamına gelir.

Sistem kullanıcı arayüzünü özelleştirme

Yer Paylaşımları

Sistem kullanıcı arayüzünü özelleştirmek için Android kaynak kodunu değiştirebilirsiniz ancak bunu yaptığınızda gelecekteki Android güncellemelerinin uygulanmasını daha zor ve karmaşık hale getirirsiniz. Bunun yerine Android, kaynak kodu değiştirmeden kaynak dosyaları değiştirmenize olanak tanıyan bir yer paylaşımı dizininin kullanılmasını destekler. Android derleme sisteminde yer paylaşımı sistemi, dosyaları kontrollü bir şekilde geçersiz kılar. AOSP kaynak kodunun tüm ağacı taranmadan değiştirilen tüm dosyalar açıkça tanımlanır.

Yer paylaşımı dosyaları PRODUCT_PACKAGE_OVERLAYS dizinine yerleştirilmeli ve orijinal AOSP kök yapısıyla tam olarak aynı alt klasörlere sahip olmalıdır. Android 10 veya sonraki sürümlerde PRODUCT_PACKAGE_OVERLAYS şu şekilde ayarlanır:

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

Otomotiv Sistem Kullanıcı Arayüzü, Sistem Kullanıcı Arayüzü ve CarSystemUI paketlerindeki kaynakları kullanır. Bu, her konumdaki kaynakların, Automotive Sistem Kullanıcı Arayüzü'nün görünümünü ve tarzını etkilemek için yer paylaşımlarıyla geçersiz kılınabileceği anlamına gelir.

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

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

Aşağıdaki konumda bulunan yeni 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 dosyasını değiştirmek için (CarSystemUI'de değil Sistem Kullanıcı Arayüzü'nde) değiştirme amaçlı 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ünde ekranın sol, alt ve sağ tarafında üç gezinme çubuğu 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 yer paylaşımı yapılarak özelleştirilebilen bir temel hazırlığı ve temel hazırlığı yapılmamış durumu vardır:

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

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

Cihaz belirli bir kullanıcı için uygun şekilde hazırlanmışsa bu görünümler CarSystemBar#createSystemBar içinde şişirilir.

Durum çubuğu

Durum çubuğunu ek işlevlere sahip bir gezinme çubuğu olarak düşünün. Gezinme çubuğunun aksine, durum çubuğunun devre dışı bırakılmasını sağlayan bir işareti yoktur. Durum çubuğunu aşağıdakilerle değiştirebilirsiniz:

  • car_top_navigation_bar.xml
  • car_top_navigation_bar_unprovisioned.xml

Bu düzenler üst düzeyde com.android.systemui.statusbar.car.CarNavigationBarView içermelidir. Durum çubuğunda durum simgeleri bulunur. Bir simgesinin boyutunu değiştirmek için belirli bir boyut belirtmek yerine simgeyi ölçek faktörüyle eşit şekilde ölçeklendirin. Örneğin, simgelerin boyutunu ikiye katlamak için bir yer paylaşımı dosyasına /overlay/frameworks/base/packages/CarSystemUI/res/values/dimens.xml 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, önemli bildirim (HUN) ve kilit ekranını da içeren özel bir pencere katmanında bulunur. Bunlar için çeşitli düzenler super_status_bar.xml'e dahildir.

Sistem kullanıcı arayüzü kaynak kodunda yapılan değişiklikler

Yer paylaşımları, sistem kullanıcı arayüzü davranışını yeterince özelleştirmek için gereken esnekliği sağlamayabilir.

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 Automotive System kullanıcı arayüzü kodunu genişletmenizi önemle tavsiye ederiz. Bu sayede, tüm özelleştirmeler bilinen API yüzeyleri aracılığıyla uygulandığından, temel Automotive System kullanıcı arayüzü kaynak kodu minimum birleştirme çakışmasıyla yükseltilebilir.

Sistem kullanıcı arayüzünün çoğu yönü şu iki giriş noktası üzerinden özelleştirilebilir:

  • config_statusBarComponent
  • config_systemUIFactoryComponent

Örneğin, CarStatusBar'u genişleten com.android.systemui.statusbar.car.custom.CustomCarStatusBar adlı bir sınıf oluşturursanız config_statusBarComponent'yi bu yeni bileşene işaret edecek şekilde güncelleyin. Bu sınıfın genişletilmesi, sistem çubuğu ve bildirim mantığıyla ilgili çoğu öğenin özelleştirilmesini sağlar.

Benzer şekilde, CustomCarSystemUIFactory oluşturup config_systemUIFactoryComponent içine yerleştirebilirsiniz. VolumeUI ve kilit ekranının işlevini güncellemek için bu sınıfı kullanın.

Kullanıcı değiştirme ve kilit açma işlemlerini özelleştirme

Aşağıdaki materyalde, kullanıcı geçiş deneyiminin nasıl özelleştirileceği açıklanmaktadır.

Terim Açıklama
Keyguard Ön plan uygulamasıyla yanlışlıkla etkileşimi önlemek için tam ekran iletişim kutusu. Birden fazla kullanıcı ayarlandığında her kullanıcının gizliliğini korur.
Yükleme iletişim kutusu Kullanıcılar arasında geçiş yapılırken görüntülenen yükleme ekranı.
Kilit ekranı, güvenlik görevlisi Kullanıcının PIN, desen veya şifre girmesini gerektiren ekran.
Kullanıcı Android kullanıcısı.
Kullanıcı seçici Cihaz açıldığında gösterilen kullanıcı seçici ekranı.
Kullanıcı değiştirici Hızlı Ayarlar'dan ekran değiştirirken gösterilen kullanıcı değiştirici.

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

Kilit ekranı ve davetli

Android Automotive OS'te, kullanıcı seçicinin bulunduğu Kilit Ekranı yalnızca kullanıcı kilit ekranındaki İptal düğmesini tıkladığında gösterilir. Kilit Ekranı aşağıda gösterilmiştir.

Klavye kilidi ekranı

Şekil 1. Kilit ekranı

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

Kilit Ekranı

Şekil 2. Kilit ekranı.

Kilit, güç açma/kapatma işlemini manuel olarak tetikleyecek şekilde ayarlandığında aşağıdaki talimatı uygulayı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 entegre bir cihaz ve Haritalar yeniden başlatıldığında gösterilir. Daha fazla bilgi için FullscreenUserSwitcher bölümüne bakın.

Yükleme ekranı

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

Bu ekranın düzeni car_fullscreen_user_switcher.xml'te özelleştirilebilir.

Yükleme ekranı

Yükleme ekranı, giriş noktasından bağımsız olarak kullanıcı geçişi yapıldığında gösterilir. Örneğin, kullanıcı seçici veya Ayarlar ekranı üzerinden. Yükleme ekranı, sistem arayüzü çerçevesinin ayrılmaz bir parçasıdır ve CarUserSwitchingDialog adlı herkese açık sınıfla eşlenir. Örnek için yukarıdaki 3. resme bakın.

Tema, Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog ile özelleştirilebilir.

Android kullanıcısını ayarlamak için ilk Kurulum Sihirbazı akışında sürücünün kendisi için bir kullanıcı adı oluşturması sağlanır. Sürücü daha sonra Android kullanıcısını bir Google Hesabı ile ilişkilendirirse kullanıcı adı bu hesaptan seçilir. Ancak sürücü, B sürücüsü gibi bir ad belirtir ve daha sonra bu kullanıcı adını Maddy adıyla Google Hesabı'na ilişkilendirirse başlangıçta atanan ad (B sürücüsü) açıkça ayarlandığı için değişmez. Sürücü, adı yalnızca Ayarlar menüsünden değiştirebilir.

Düzen, car_user_switching_dialog.xml. uygulamasında özelleştirilebilir

OEM'ler, NoActionBar.Fullscreen adlı temayı kullanarak durum ve gezinme çubuğunu gizleyebilir. (Bu, araba referans kullanıcı arayüzü için güncellenmiş orijinal sistem kullanıcı arayüzüdür.) Daha fazla bilgi için Özelleştirme bölümüne bakın.

OEM'ler, kullanıcıları değiştirmek için kullanıcı arayüzü giriş noktaları sağlayabilir ancak sonuçlar bazen istenmeyen olabilir. Bu durumda:

  1. OEM, özel yükleme ekranını (veya iletişim kutusunu) oluşturur ve gösterir.
    • Kullanıcı geçiş yöntemini seçtiğinde OEM, özel yükleme ekranını başlatır. Bu ekran, kullanıcı geçişi tamamlandığında gizlenebilir.
    • OEM, öncelik aralığını tercihine göre ayarlamalıdır. Örneğin, daha yüksek öncelikli bir pencere türü. Öncelik, Kilit Ekranı'nın önceliğini aşmamalıdır.
  2. OEM, config_customuserswitchui bölümünde açıklandığı gibi temel çerçevede config_customUserSwitchUi=true değerini config.xml olarak ayarlar. Sonuç olarak, çerçeve CarUserSwitchingDialog değerini göstermez.

Kilit ekranını özelleştirme

Kilit ekranı, OEM tarafından özelleştirilebilen sistem kullanıcı arayüzünün ayrılmaz bir parçasıdır. Akışları özelleştirmek için frameworks/base/packages/CarSystemUI/ ile başlayın.

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

Kurulum Sihirbazı, ilk kez kullanıcı kurulumunu gerçekleştirir. Bu da özelleştirilebilir. Kullanıcı oluşturmak için UserManager API'lerini kullanabilirsiniz. Bazı durumlarda bu işlem arka planda uygulanarak Kurulum Sihirbazı süreci kolaylaştırılabilir.