הטמעת ממשק המשתמש של המערכת

מערכת Android Automotive מספקת ממשק משתמש חדש של המערכת שפותח במיוחד לכלי רכב. רוב הרכיבים של ממשק המשתמש של המערכת מחוברים באופן הדוק לשירותי framework. ממשק המשתמש של המערכת מתייחס לכל שמוצג במסך ולא חלק מאפליקציה. ממשק המשתמש של מערכת הרכב (בתבנית חבילת הרכיבים של CarSystemUI) היא הרחבה של ממשק המשתמש של מערכת Android (בחבילת ממשק המשתמש של המערכת), שהותאם במיוחד לכלי רכב.

מהו ממשק המשתמש של המערכת?

הרכיבים הספציפיים לממשק המשתמש של מערכת הרכב הם:

רכיב תיאור
ממשק משתמש במסך הנעילה מסך שדרכו המשתמשים עוברים אימות מול חשבון משתמש מסוים.
סרגל הניווט סרגל מערכת שניתן למקם בצידו השמאלי, התחתון או הימני של המסך, וכן יכול לכלול לחצני מאפיין לניווט לאפליקציות שונות, להפעיל או להשבית את חלונית ההתראות לספק את אמצעי הבקרה ברכב (כמו בקרת אקלים). זה שונה מממשק המשתמש של מערכת Android , שמספק את הלחצנים 'הקודם', 'דף הבית' ו'מקבץ אפליקציות'.
שורת סטטוס סרגל מערכת ממוקם לאורך המסך ומשמש כסרגל ניווט. שורת הסטטוס מספקת גם פונקציונליות שתומכת בדברים הבאים:
  • סמלים של קישוריות. כולל חיבור ל-Bluetooth, ל-Wi-Fi ולנקודה לשיתוף אינטרנט/לנייד.
  • חלונית התראות נפתחת. לדוגמה, החלקה למטה מהחלק העליון של המסך.
  • התראות 'שימו לב' (HUN).
ממשק המשתמש של המערכת מתייחס לכל רכיב שמוצג במסך שאינו חלק מאפליקציה.
ממשק המשתמש להחלפת משתמשים מסך שבאמצעותו משתמש יכול לבחור משתמש אחר.
ממשק המשתמש של עוצמת הקול תיבת דו-שיח שמוצגת כשהנהג משתמש בלחצני עוצמת הקול הפיזיים כדי לשנות את עוצמת הקול במכשיר.

איך פועל ממשק המשתמש של המערכת?

ממשק המשתמש של המערכת הוא אפליקציה ל-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 (זהו ממשק המשתמש המקורי של המערכת, עודכן עבור ממשק המשתמש של הרכב.) מידע נוסף זמין במאמר הבא: התאמה אישית.

יצרני ציוד מקורי יכולים לספק נקודות כניסה לממשק המשתמש כדי לעבור בין משתמשים, אבל לפעמים התוצאות יכולות להיות בלתי רצוי. במקרה כזה:

  1. ה-OEM (יצרן הציוד המקורי) יוצר ומציג את מסך הטעינה המותאם אישית (או תיבת הדו-שיח).
    • באופן ספציפי לחוויית המשתמש, ה-OEM (יצרן הציוד המקורי) מפעיל מסך טעינה מותאם אישית כאשר משתמש בוחר באמצעי שניתן להסתיר כשהחלפת המשתמש הושלמה.
    • על ה-OEM (יצרן הציוד המקורי) להגדיר את העדיפות חלון בהתאם להעדפות שלהם. לדוגמה, סוג חלון בעדיפות גבוהה יותר. רלוונטיות העדיפות לא יכולה להיות גבוהה יותר מזו של מגן המפתחות.
  2. ה-OEM (יצרן הציוד המקורי) מגדיר את config_customUserSwitchUi=true במסגרת הליבה config.xml כפי שמתואר במאמר config_customuserswitchui. בתור כתוצאה מכך, ה-framework לא מציג את CarUserSwitchingDialog.

התאמה אישית של מסך הנעילה

מסך הנעילה הוא חלק בלתי נפרד מממשק המשתמש של המערכת, שיצרן הציוד המקורי יכול להתאים אישית. כדי להתאים אישית את התהליך, מתחילים ב-frameworks/base/packages/CarSystemUI/.

התאמה אישית של הגדרת המשתמש בפעם הראשונה

אשף ההגדרה מבצע הגדרה של משתמש בפעם הראשונה. גם את ההגדרה הזו אפשר להתאים אישית. אפשר להשתמש ממשקי API של UserManager כדי ליצור משתמש. במקרים מסוימים אפשר להטמיע את האפשרות הזו ברקע, וכך לייעל את התהליך של אשף ההגדרה.