תאימות למסך הרכב מאפשרת לאפליקציות לטלפון ולטאבלט לפעול בצורה טובה במכשירים לרכב.
התכונות כוללות:
- שינוי קנה מידה של DPI: שינוי קנה מידה של רכיבי ממשק המשתמש של האפליקציה על סמך DPI של התצוגה.
- אזור בטוח לעיבוד האפליקציה: התוכן של האפליקציה צריך להיות בתוך אזור בטוח, כדי שלא יוסתר על ידי רכיבי ממשק המשתמש של המערכת.
- לוגיקה של סיווג אפליקציות: זיהוי אפליקציות שנדרשת בהן תאימות למסך של הרכב.
תכונות תאימות
הפלטפורמה מספקת כמה מנגנונים לאופטימיזציה של רינדור האפליקציות והתאמת הגודל שלהן במסכים של מערכות לרכב.
שינוי גודל DPI
התכונה 'שינוי קנה מידה של DPI' מאפשרת ליצרני מכשירים לשנות את קנה המידה של צפיפות ה-DPI של אפליקציות ספציפיות או של כל האפליקציות שנדרשת בהן תאימות לתצוגה ברכב.
כדי להגדיר את שינוי קנה המידה של צפיפות האפליקציות:
מוסיפים קובץ תצורה
/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>כדי להגדיר ערך ברירת מחדל של קנה מידה לכל האפליקציות שנדרשת להן תאימות לתצוגה ברכב, צריך לשנות את קנה המידה של תצוגה 0 ל-
<scale display="0">1.0</scale>. הערך הוא הערך של הסולם ההפוך. לדוגמה, כדי לשנות את גודל האפליקציות שדורשות תאימות למסך הרכב ל-1.5x, מגדירים את ערך השינוי ל-(1 / 1.5) = 0.67:<config> <scale display="0">0.67</scale> </config>כדי להגדיר ערך קנה מידה לאפליקציה ספציפית, מוסיפים רכיב
scaleחדש ל-config. בדוגמה הזו, המודעה 'רכב' ב-YouTube מוגדלת פי 1.43 (לדוגמה,(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
מוסיפים את קובץ התצורה ואת הצהרת התכונה ל-build של 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" />
המערכת בודקת אם אפליקציה מסוימת דורשת תכונות תאימות למסך ברכב באמצעות הלוגיקה הבאה (הבדיקה מתבצעת לפי הסדר):
- מטא-נתונים של מניפסט
android.software.car.display_compatibility:- אם
android:value="true"→ App requires compat - אם
android:value="false"→ האפליקציה לא דורשת תאימות - אם חסרים מטא-נתונים, ממשיכים לבדיקה הבאה.
- אם
- משתמש בתכונה
android.hardware.type.automotive:- אם התכונה מוצהרת (לא משנה אם
android:requiredהערך הואtrueאוfalse) → האפליקציה לא דורשת תאימות - אם התכונה לא מופיעה, עוברים לבדיקה הבאה.
- אם התכונה מוצהרת (לא משנה אם
- פעילויות באפליקציות:
- אם לאפליקציה אין פעילויות (כמו RRO, אפליקציות ללא ממשק משתמש או שירותים) ← האפליקציה לא דורשת תאימות
- אם יש לאפליקציה פעילויות, ממשיכים לבדיקה הבאה.
- פרטי האפליקציה:
- אם האפליקציה היא אפליקציה עם הרשאות מיוחדות → האפליקציה לא דורשת תאימות
- אם האפליקציה היא אפליקציית מערכת (
FLAG_SYSTEM) → האפליקציה לא דורשת תאימות - אחרת, עוברים לבדיקה הבאה.
- פרטי החתימה:
- אם האפליקציה חתומה על ידי הפלטפורמה (חתומה באותה חתימה כמו מסגרת Android) ← האפליקציה לא דורשת תאימות
- אחרת, עוברים לבדיקה הבאה.
- החלטה לגבי חלופה:
- אם כל הבדיקות עוברות בלי ביטול ההסכמה → האפליקציה דורשת תאימות
מידע נוסף זמין במאמר בנושא CarDisplayCompatScaleProviderUpdatableImpl.requiresDisplayCompatNotCachedLocked.
תמיכה במכשיר
מכשירים שתומכים בתאימות לתצוגה ברכב צריכים להצהיר על התמיכה באמצעות הצהרת התכונה:
<feature name="android.software.car.display_compatibility" />