Araç ekranı uyumluluğu

Araba ekranı uyumluluğu, telefon ve tablet uygulamalarının otomotiv cihazlarında iyi performans göstermesini sağlar.

Süper Chat ve Süper Etiketler

  • DPI ölçeklendirme: Uygulama kullanıcı arayüzü öğelerini ekran DPI'sine göre ölçeklendirin.
  • Uygulama oluşturma için güvenli alan: Uygulama içeriğini güvenli bir alanda tutun ve sistem kullanıcı arayüzü öğeleri tarafından gizlenmesini önleyin.
  • Uygulama sınıflandırma mantığı: Araç ekranı uyumluluğu gerektiren uygulamaları belirleyin.

Uyumluluk özellikleri

Platform, otomotiv ekranlarında uygulama oluşturma ve ölçeklendirmeyi optimize etmek için çeşitli mekanizmalar sunar.

DPI ölçeklendirme

DPI ölçeklendirme özelliği, cihaz üreticilerinin Car Display Compat gerektiren bağımsız uygulamaların veya tüm uygulamaların yoğunluk DPI'sını ölçeklendirmesini sağlar.

Uygulamaların yoğunluk ölçeklendirmesini yapılandırmak için:

  1. Yapılandırma dosyası ekleme /product/etc/display_compat_config.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <!--
        Each scale factor can have the following attributes
    
        display     (required) Specifies the displayId to which this scale factor will be applied.
        packageName (optional) Specifies the packageName to which the scale factor will be applied.
                    If omitted, the scaling will apply to all packages.
    
        For example:
        <scale display="0" packageName="com.android.car.media.localmediaplayer">0.5</scale>
    
        This means that only package `com.android.car.media.localmediaplayer` on display `0` will be scaled.
    -->
    <config>
    <scale display="0">1.0</scale>
    </config>
    
  2. Car Display Compat gerektiren tüm uygulamalar için varsayılan ölçek değerini ayarlamak üzere ekran 0'ın varsayılan ölçeğini <scale display="0">1.0</scale> olarak değiştirin. Değer, ters ölçek değeridir. Örneğin, Car Display Compat gerektiren uygulamaları 1, 5 kat ölçeklendirmek için ölçek değerini (1 / 1.5) = 0.67 olarak ayarlayın:

    <config>
        <scale display="0">0.67</scale>
    </config>
    
  3. Belirli bir uygulama için ölçek değeri ayarlamak üzere yapılandırmaya yeni bir scale öğesi ekleyin. Bu örnekte, YouTube Automotive 1,43 kat ölçeklendirilir (örneğin, (1 / 1.43) = 0.7).

    <config>
        <scale display="0">0.67</scale>
        <scale display="0" packageName="com.google.android.apps.automotive.youtube">0.7</scale>
    </config>
    

/product/etc/display_compat_config.xml değerini değiştirdiğinizde sistem çalışıyorsa yeni yapılandırmanın geçerli olması için önbelleği temizlemeniz gerekir. Önbelleği temizlemek için bu makroyu kullanın:

SECURE_SETTING_KEY="android.software.car.display_compatibility:settings:secure"
USER_ID_LIST=$(adb shell cmd user list -v | grep 'id=' | cut -d'=' -f2 | cut -d',' -f1)
for USER_ID in $USER_ID_LIST; do
    echo "Deleting Display Compat config for user: $USER_ID"
    adb shell settings delete secure --user $USER_ID $SECURE_SETTING_KEY
    sleep 1
    echo
done
  1. Yapılandırma dosyasını ve özellik bildirimini bir AAOS derlemesine ekleyin. Örneğin, vendor/OEM_NAME/products/displaycompat içine ekleyin:

    # File: vendor/OEM_NAME/products/displaycompat/Android.bp
    
    prebuilt_etc {
        name: "display_compat_config",
        filename: "display_compat_config.xml",
        src: "display_compat_config.xml",
        product_specific: true,
    }
    

Güvenli uygulama alanı

Telefon ve tablet uygulamaları genellikle Automotive'de bulunan büyük sistem çubukları için tasarlanmaz. Bu uygulamaların, sistem çubuklarının veya sistem yer paylaşımlarının altında içerik çizmesi kısıtlanmalıdır. Aksi takdirde, etkileşimli öğeleri son kullanıcının göremeyeceği bir alanda oluşturabilirler.

Güvenli uygulama alanı, ölçeklenebilir kullanıcı arayüzü SafeBounds kullanılarak uygulanır.

Uygulama sınıflandırma mantığı

Uygulama uyumluluğunu artıran ek işlevler oluşturmak için CarPackageManager.requiresDisplayCompat(..)'yı kullanabilirsiniz. Örneğin, bu işlevi kullanarak geri düğmesi veya ek kullanıcı arayüzü ekleyebilirsiniz.

Uygulama geliştiriciler, uygulamanın manifest dosyasına meta veri ekleyerek araba ekranı uyumluluğunu etkinleştirebilir:

<meta-data
    android:name="android.software.car.display_compatibility"
    android:value="true" />

Sistem, bir uygulamanın araba ekranı uyumluluğu özellikleri gerektirip gerektirmediğini aşağıdaki mantıkla değerlendirir (sırayla değerlendirilir):

  1. Manifest meta verileri android.software.car.display_compatibility:
    • android:value="true" ise → Uygulama uyumluluk gerektiriyor
    • android:value="false"Uygulama uyumluluk gerektirmiyor
    • Meta veriler eksikse bir sonraki kontrole geçin.
  2. Kullanım alanı android.hardware.type.automotive:
    • Özellik beyan edildiyse (android:required true veya false olup olmadığına bakılmaksızın) → Uygulama uyumluluk gerektirmiyor
    • Özellik eksikse bir sonraki kontrole geçin.
  3. Uygulama etkinlikleri:
    • Uygulamada etkinlik yoksa (ör. RRO'lar, başsız uygulamalar veya hizmetler) → Uygulama uyumluluk gerektirmiyor
    • Uygulamada etkinlikler varsa bir sonraki kontrole geçin.
  4. Uygulama bilgileri:
    • Uygulama ayrıcalıklıysa → Uygulama uyumluluk gerektirmez
    • Uygulama bir sistem uygulamasıysa (FLAG_SYSTEM) → Uygulama uyumluluk gerektirmiyor
    • Aksi takdirde bir sonraki kontrole geçin.
  5. İmza bilgileri:
    • Uygulama platform imzalıysa (Android çerçevesiyle aynı imzayla imzalanmışsa) → Uygulama uyumluluk gerektirmez
    • Aksi takdirde bir sonraki kontrole geçin.
  6. Yedek karar:
    • Tüm kontroller devre dışı bırakılmadan geçerse → Uygulama uyumluluk gerektiriyor

CarDisplayCompatScaleProviderUpdatableImpl.requiresDisplayCompatNotCachedLocked sayfasına göz atın.

Cihaz desteği

Araba ekranı uyumluluğunu destekleyen cihazlar, özellik bildirimi kullanarak desteği bildirmelidir:

<feature name="android.software.car.display_compatibility" />