מערכת Android Automotive מספקת ממשק משתמש חדש של המערכת שפותח במיוחד לכלי רכב. רוב הרכיבים של ממשק המשתמש של המערכת מחוברים באופן הדוק לשירותי framework. ממשק המשתמש של המערכת מתייחס לכל שמוצג במסך ולא חלק מאפליקציה. ממשק המשתמש של מערכת הרכב (בתבנית חבילת הרכיבים של CarSystemUI) היא הרחבה של ממשק המשתמש של מערכת Android (בחבילת ממשק המשתמש של המערכת), שהותאם במיוחד לכלי רכב.
מהו ממשק המשתמש של המערכת?
הרכיבים הספציפיים לממשק המשתמש של מערכת הרכב הם:
רכיב | תיאור |
---|---|
ממשק משתמש במסך הנעילה | מסך שדרכו המשתמשים עוברים אימות מול חשבון משתמש מסוים. |
סרגל הניווט | סרגל מערכת שניתן למקם בצידו השמאלי, התחתון או הימני של המסך, וכן יכול לכלול לחצני מאפיין לניווט לאפליקציות שונות, להפעיל או להשבית את חלונית ההתראות לספק את אמצעי הבקרה ברכב (כמו בקרת אקלים). זה שונה מממשק המשתמש של מערכת Android , שמספק את הלחצנים 'הקודם', 'דף הבית' ו'מקבץ אפליקציות'. |
שורת סטטוס | סרגל מערכת ממוקם לאורך המסך ומשמש כסרגל ניווט.
שורת הסטטוס מספקת גם פונקציונליות שתומכת בדברים הבאים:
|
ממשק המשתמש של המערכת | מתייחס לכל רכיב שמוצג במסך שאינו חלק מאפליקציה. |
ממשק המשתמש להחלפת משתמשים | מסך שבאמצעותו משתמש יכול לבחור משתמש אחר. |
ממשק המשתמש של עוצמת הקול | תיבת דו-שיח שמוצגת כשהנהג משתמש בלחצני עוצמת הקול הפיזיים כדי לשנות את עוצמת הקול במכשיר. |
איך פועל ממשק המשתמש של המערכת?
ממשק המשתמש של המערכת הוא אפליקציה ל-Android שפועלת כשהמכשיר מופעל. מתחילה דרך חשיבה SystemServer. נקודות הכניסה הרלוונטיות ביותר להיבטים הגלויים למשתמשים של ממשק המשתמש של המערכת מפורטות בהמשך. הרכיבים הבאים מאפשרים להתאים אישית את ממשק המשתמש של מערכת Android כדי לקבל יכולות ספציפיות ל-Automotive.
config_statusBarComponent
config_systemUIFactoryComponent
CarSystemUI היא הרחבה של חבילת ממשק המשתמש של המערכת, כלומר המחלקות ניתן להשתמש במשאבים שבחבילת ממשק המשתמש של המערכת ולבטל אותם על ידי חבילת CarSystemUI.
התאמה אישית של ממשק המשתמש של המערכת
שכבות-על
אפשר לשנות את קוד המקור של Android כדי להתאים אישית את ממשק המשתמש של המערכת, כך קשה ומורכב יותר להחיל עדכונים עתידיים ל-Android. במקום זאת, Android תומכת בשימוש בספריית שכבת-על, שמאפשרת להחליף קובצי משאבים שינוי קוד המקור. במערכת ה-build של Android, מערכת שכבת-העל מחליפה קבצים באופן מבוקר. כל הקבצים ששונו זוהו בבירור בלי לעבור את כל השקפים עץ של קוד המקור של AOSP.
את הקבצים של שכבות-על צריך למקם בספרייה PRODUCT_PACKAGE_OVERLAYS
וצריכים להיות בהם
בדיוק אותן תיקיות משנה כמו מבנה הבסיס של ה-AOSP. ב-Android
10 ומעלה, PRODUCT_PACKAGE_OVERLAYS
מוגדר לערך:
PRODUCT_PACKAGE_OVERLAYS := packages/services/Car/car_product/overlay
ממשק המשתמש של Automotive System משתמש במשאבים מממשק המשתמש של המערכת וגם מחבילות CarSystemUI, כלומר, ניתן לעקוף משאבים מכל מיקום באמצעות שכבות-על כדי להשפיע של ממשק המשתמש של מערכת הרכב.
כדי להחליף קובץ, משכפלים את מבנה הספרייה של הקובץ שהוחלף בקובץ ה-
ספריית /overlay
שציינת, ואז כוללים את ההחלפה
לדוגמה, כדי להחליף:
frameworks/base/packages/CarSystemUI/res/layout/super_status_bar.xml
הוספת קובץ super_status_bar.xml
החלופי שנמצא ב:
packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/
כדי להחליף את frameworks/base/packages/SystemUI/res/values/config.xml
,
(בממשק המשתמש של המערכת, ולא CarSystemUI), מוסיפים את קובץ ה-config.xml
החלופי אל:
packages/services/Car/car_product/overlay/frameworks/base/packages/SystemUI/res/layout/
או
packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/
תיאורים של שתי נקודות הכניסה העיקריות להתאמה אישית מופיעים בהמשך.
סרגל הניווט
בממשק המשתמש של מערכת הרכב יכולים להיות שלושה פסי ניווט בצד שמאל, למטה ובצד ימין של המסך מסך. הרשאות הגישה של כל סרגל מערכת מוגדרות בהתאם לתצורות הבאות:
config_enableLeftSystemBar
config_enableBottomSystemBar
config_enableRightSystemBar
בכל עמודה יש מצב של הקצאה ולא של ניהול הקצאות, שניתן להתאים אישית על ידי שכבת-על קובצי הפריסה המתאימים:
car_left_system_bar.xml
car_left_system_bar_unprovisioned.xml
car_system_bar.xml
(פריסה לסרגל הניווט התחתון)car_system_bar_unprovisioned.xml
car_right_system_bar.xml
car_right_system_bar_unprovisioned.xml
הפריסות האלה חייבות להכיל
com.android.systemui.car.systembar.CarSystemBarView
ברמה העליונה, שיכול
לכלול את כל הדעות הנדרשות. אפשר לכלול לחצנים בתוך סרגלי הניווט באמצעות
com.android.systemui.car.systembar.CarSystemBarButton
מספר הצפיות הזה גבוה מדי במדד CarSystemBar#createSystemBar
,
אם המכשיר מוקצה בצורה תקינה למשתמש מסוים.
שורת סטטוס
שורת הסטטוס נחשבת לסרגל ניווט עם פונקציונליות נוספת. ביטול הלייק בשורת הסטטוס אין דגל להשבתה שלה. אפשר לשנות את שורת הסטטוס באמצעות:
car_top_navigation_bar.xml
car_top_navigation_bar_unprovisioned.xml
הפריסות האלה חייבות להכיל com.android.systemui.statusbar.car.CarNavigationBarView
ברמה העליונה. שורת הסטטוס כוללת סמלי סטטוס. כדי לשנות גודל של סמל, מגדילים את
סמל באופן אחיד עם גורם קנה מידה במקום לציין גודל ספציפי. לדוגמה, בשכבת-על
קובץ /overlay/frameworks/base/packages/CarSystemUI/res/values/dimens.xml
, מוסיפים את
כדי להכפיל את גודל הסמלים:
<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>
שורת הסטטוס נמצאת בשכבת סינון מיוחדת שכוללת גם
חלונית ההתראות, מחליף המשתמשים, התראות 'שימו לב' (HUN) וגם
את מגן המקשים. הפריסות השונות כלולות
super_status_bar.xml
שינויים בקוד המקור של ממשק המשתמש של המערכת
ייתכן ששכבות-על לא יספקו את הגמישות הדרושה להתאמה אישית מספקת של התנהגות ממשק המשתמש של המערכת.
התראה. קשה לעדכן שינויים שבוצעו בקוד המקור של Android בגרסאות מאוחרות יותר של Android. מומלץ מאוד להרחיב את הקוד של ממשק המשתמש של מערכת הרכב במקום לשנות את הקוד ישירות. כך, קוד המקור של ממשק המשתמש של מערכת הרכב ניתנים לשדרוג עם מינימום התנגשויות בלו"ז, כי כל ההתאמות האישיות מיושמות באמצעות בפלטפורמות API ידועות.
אפשר להתאים אישית את רוב ההיבטים של ממשק המשתמש של המערכת דרך שתי נקודות הכניסה הבאות:
config_statusBarComponent
config_systemUIFactoryComponent
לדוגמה, אם יוצרים כיתה בשם
com.android.systemui.statusbar.car.custom.CustomCarStatusBar
,
נמשך זמן של CarStatusBar
, עדכון של config_statusBarComponent
לנקודה
לרכיב החדש הזה. הרחבת המחלקה מאפשרת התאמה אישית של רוב הרכיבים שקשורים
לסרגל המערכת וללוגיקת ההתראות.
באותו אופן, אפשר ליצור CustomCarSystemUIFactory
ולמקם אותו
config_systemUIFactoryComponent
. השתמשו בכיתה הזו כדי לעדכן את הפונקציונליות של
ממשק משתמש של עוצמת הקול ומסך הנעילה.
התאמה אישית של מעבר בין מכשירים וביטול נעילה של משתמשים
בחומר הבא מוסבר איך להתאים אישית את חוויית המעבר בין משתמשים.
מונח | תיאור |
---|---|
מגן מקלדת | תיבת דו-שיח במסך מלא למניעת אינטראקציה מקרית עם האפליקציה בחזית. הגנה על הפרטיות של כל משתמש כשמגדירים כמה משתמשים. |
תיבת הדו-שיח בטעינה | מסך הטעינה שמוצג כשעוברים בין משתמשים. |
מסך נעילה, מקפץ | מסך שבו המשתמש נדרש להזין קוד אימות, קו ביטול נעילה או סיסמה. |
משתמש/ת | משתמש Android. |
בוחר המשתמשים | המסך של בוחר המשתמשים שמוצג כשמפעילים את המכשיר. |
מחליף המשתמשים | מתג המעבר בין המשתמשים מוצג כשעוברים בין מסכים מההגדרות המהירות. |
התאמה אישית של מעבר בין משתמשים
מגן מקשים ומקפיץ
ב-Android Automotive OS, מסך KeyGuard עם בורר המשתמשים מוצג רק כשמשתמש לוחץ על הלחצן 'ביטול' במסך הנעילה. מסך KeyGuard מוצג למטה.
איור 1. מסך מגן מקשים
מסך נעילה עם עזיבה מהדף הראשון מוצג כשהמשתמש בוחר סוג פרטיות שלפיו מבטלים את נעילת המכשיר, כמו שמוצג למטה.
איור 2. מסך נעילה.
כאשר הנעילה מוגדרת להפעלה ידנית או לכיבוי ידנית, יש להשתמש בהוראה הבאה:
adb shell input keyevent 26
בוחר המשתמשים
המסך של בוחר המשתמשים מוצג כאשר מכשיר הוא חלק משורת הסטטוס של ממשק המשתמש של המערכת ברכב
ומפות Google תופעל מחדש. מידע נוסף זמין במאמר הבא:
FullscreenUserSwitcher
איור 3. המסך של בוחר המשתמשים
אפשר להתאים אישית את פריסת המסך
car_fullscreen_user_switcher.xml
המסך בטעינה
מסך הטעינה מוצג בכל פעם שמחליפים משתמש, ללא קשר לנקודת הכניסה. עבור
לדוגמה, באמצעות בוחר המשתמשים או מסך ההגדרות. מסך הטעינה הוא חלק בלתי נפרד
framework ממשק משתמש של מערכת וממפות למחלקה הציבורית
CarUserSwitchingDialog
לדוגמה, באיור 3 שלמעלה.
אפשר להתאים אישית את העיצוב באמצעות
Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog
כדי להגדיר משתמש ב-Android, תהליך ההגדרה הראשוני מאפשר לנהג להגדיר משתמש. את השם שלו. אם לאחר מכן הנהג משייך את משתמש Android לחשבון Google, המשתמש נבחר מהחשבון הזה. עם זאת, אם הנהג מציין שם, לדוגמה DriverB, ובהמשך משייך את שם המשתמש לחשבון Google שלו לשם Maddy, השם שהוקצה במקור (DriverB) לא משתנה כי השם הזה הוגדר במפורש. הנהג/ת יכולים לשנות את השם בתפריט ההגדרות בלבד.
אפשר להתאים אישית את הפריסה בcar_user_switching_dialog.xml.
יצרני ציוד מקורי יכולים להסתיר את הסטטוס ואת סרגל הניווט באמצעות עיצוב שנקרא
NoActionBar.Fullscreen
(זהו ממשק המשתמש המקורי של המערכת, עודכן עבור ממשק המשתמש של הרכב.) מידע נוסף זמין במאמר הבא:
התאמה אישית.
יצרני ציוד מקורי יכולים לספק נקודות כניסה לממשק המשתמש כדי לעבור בין משתמשים, אבל לפעמים התוצאות יכולות להיות בלתי רצוי. במקרה כזה:
- ה-OEM (יצרן הציוד המקורי) יוצר ומציג את מסך הטעינה המותאם אישית (או תיבת הדו-שיח).
- באופן ספציפי לחוויית המשתמש, ה-OEM (יצרן הציוד המקורי) מפעיל מסך טעינה מותאם אישית כאשר משתמש בוחר באמצעי שניתן להסתיר כשהחלפת המשתמש הושלמה.
- על ה-OEM (יצרן הציוד המקורי) להגדיר את העדיפות חלון בהתאם להעדפות שלהם. לדוגמה, סוג חלון בעדיפות גבוהה יותר. רלוונטיות העדיפות לא יכולה להיות גבוהה יותר מזו של מגן המפתחות.
- ה-OEM (יצרן הציוד המקורי) מגדיר את
config_customUserSwitchUi=true
במסגרת הליבהconfig.xml
כפי שמתואר במאמרconfig_customuserswitchui
. בתור כתוצאה מכך, ה-framework לא מציג אתCarUserSwitchingDialog
.
התאמה אישית של מסך הנעילה
מסך הנעילה הוא חלק בלתי נפרד מממשק המשתמש של המערכת, שיצרן הציוד המקורי יכול להתאים אישית.
כדי להתאים אישית את התהליך, מתחילים ב-frameworks/base/packages/CarSystemUI/
.
התאמה אישית של הגדרת המשתמש בפעם הראשונה
אשף ההגדרה מבצע הגדרה של משתמש בפעם הראשונה. גם את ההגדרה הזו אפשר להתאים אישית. אפשר להשתמש ממשקי API של UserManager כדי ליצור משתמש. במקרים מסוימים אפשר להטמיע את האפשרות הזו ברקע, וכך לייעל את התהליך של אשף ההגדרה.