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:
|
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.
Gezinme çubuğu
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.
Ş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.
Ş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.
Ş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:
- 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.
- OEM,
config_customuserswitchui
bölümünde açıklandığı gibi temel çerçevedeconfig_customUserSwitchUi=true
değeriniconfig.xml
olarak ayarlar. Sonuç olarak, çerçeveCarUserSwitchingDialog
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.