توافق شاشة السيارة

تتيح ميزة التوافق مع شاشة السيارة تشغيل تطبيقات الهواتف والأجهزة اللوحية بشكل جيد على أجهزة السيارات.

وتشمل الميزات

  • ضبط نطاق النقاط لكل بوصة (DPI): يمكنك ضبط نطاق عناصر واجهة مستخدم التطبيق استنادًا إلى النقاط لكل بوصة (DPI) في الشاشة.
  • المنطقة الآمنة لعرض التطبيق: يمكنك حصر محتوى التطبيق ضمن منطقة آمنة، ما يمنع حجب عناصر واجهة مستخدم النظام له.
  • منطق تصنيف التطبيقات: يمكنك تحديد التطبيقات التي تتطلّب ميزة التوافق مع شاشة السيارة.

ميزات التوافق

توفّر المنصة آليات متعدّدة لتحسين عرض التطبيقات وضبط نطاقها على شاشات السيارات.

ضبط نطاق النقاط لكل بوصة (DPI)

تتيح ميزة ضبط نطاق النقاط لكل بوصة (DPI) لمصنّعي الأجهزة ضبط نطاق النقاط لكل بوصة (DPI) لكثافة تطبيقات فردية أو جميع التطبيقات التي تتطلّب ميزة التوافق مع شاشة السيارة.

لضبط نطاق كثافة التطبيقات:

  1. أضِف ملف إعداد /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. لضبط قيمة نطاق تلقائية لجميع التطبيقات التي تتطلّب ميزة التوافق مع شاشة السيارة، غيِّر النطاق التلقائي للشاشة 0 إلى <scale display="0">1.0</scale>. القيمة هي قيمة النطاق العكسي. على سبيل المثال، لضبط نطاق التطبيقات التي تتطلّب ميزة التوافق مع شاشة السيارة إلى 1.5x، اضبط قيمة النطاق على (1 / 1.5) = 0.67

    <config>
        <scale display="0">0.67</scale>
    </config>
    
  3. لضبط قيمة نطاق لتطبيق معيّن، أضِف عنصر scale جديدًا إلى الإعداد. في هذا المثال، يتم ضبط نطاق YouTube Automotive إلى 1.43x (على سبيل المثال، (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، عليك محو ذاكرة التخزين المؤقت لنفاذ مفعول الإعداد الجديد. استخدِم هذا الماكرو لمحو ذاكرة التخزين المؤقت:

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. أضِف ملف الإعداد وبيان الميزة إلى إصدار AAOS، مثلاً، في vendor/OEM_NAME/products/displaycompat

    # 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,
    }
    

المنطقة الآمنة للتطبيق

غالبًا ما لا تكون تطبيقات الهواتف والأجهزة اللوحية مصمّمة لأشرطة النظام الكبيرة المتوفّرة في Automotive. يجب منع هذه التطبيقات من عرض المحتوى أسفل أشرطة النظام أو عمليات التراكب في النظام. بخلاف ذلك، قد تعرض هذه التطبيقات عناصر تفاعلية في منطقة محجوبة عن المستخدم النهائي.

يتم تنفيذ المنطقة الآمنة للتطبيق باستخدام واجهة المستخدم القابلة للتوسيع SafeBounds.

منطق تصنيف التطبيقات

يمكنك استخدام CarPackageManager.requiresDisplayCompat(..) لإنشاء وظائف إضافية تحسّن توافق التطبيقات. على سبيل المثال، يمكنك استخدام هذه الوظيفة لإضافة زر رجوع أو واجهة مستخدم إضافية.

يمكن لمطوّري التطبيقات تفعيل ميزة التوافق مع شاشة السيارة من خلال تضمين البيانات الوصفية في بيان التطبيق:

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

يقيّم النظام ما إذا كان التطبيق يتطلّب ميزات التوافق مع شاشة السيارة باستخدام المنطق التالي (يتم تقييمه بالترتيب):

  1. البيانات الوصفية لبيان التطبيق android.software.car.display_compatibility:
    • إذا كانت android:value="true"يتطلّب التطبيق ميزة التوافق
    • إذا كانت android:value="false"لا يتطلّب التطبيق ميزة التوافق
    • إذا كانت البيانات الوصفية غير متوفّرة، انتقِل إلى عملية التحقّق التالية.
  2. استخدام الميزة android.hardware.type.automotive:
    • إذا تم بيان الميزة (بغض النظر عمّا إذا كانت android:required هي true أو false) ← لا يتطلّب التطبيق ميزة التوافق
    • إذا كانت الميزة غير متوفّرة، انتقِل إلى عملية التحقّق التالية.
  3. أنشطة التطبيق:
    • إذا لم يكن للتطبيق أي أنشطة (مثل تراكب الموارد في الوقت الفعلي (RRO) أو التطبيقات التي لا تتضمّن واجهة مستخدم أو الخدمات) ← لا يتطلّب التطبيق ميزة التوافق
    • إذا كان للتطبيق أنشطة، انتقِل إلى عملية التحقّق التالية.
  4. معلومات التطبيق:
    • إذا كان التطبيق مميّزًا ← لا يتطلّب التطبيق ميزة التوافق
    • إذا كان التطبيق تطبيق نظام (FLAG_SYSTEM) ← لا يتطلّب التطبيق ميزة التوافق
    • بخلاف ذلك، انتقِل إلى عملية التحقّق التالية.
  5. معلومات التوقيع:
    • إذا كان التطبيق موقَّعًا على المنصة (موقَّعًا بالتوقيع نفسه المُستخدَم في إطار عمل Android) ← لا يتطلّب التطبيق ميزة التوافق
    • بخلاف ذلك، انتقِل إلى عملية التحقّق التالية.
  6. قرار احتياطي:
    • إذا اجتازت جميع عمليات التحقّق بدون إيقاف ميزة التوافق ← يتطلّب التطبيق ميزة التوافق

راجِع CarDisplayCompatScaleProviderUpdatableImpl.requiresDisplayCompatNotCachedLocked.

دعم الجهاز

يجب أن تُعلن الأجهزة التي تتيح ميزة التوافق مع شاشة السيارة عن دعمها باستخدام بيان الميزة:

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