Android Automotive מספק ממשק משתמש חדש למערכת שפותח במיוחד לכלי רכב. רוב הרכיבים של ממשק המשתמש של המערכת מקושרים באופן הדוק לשירותי המסגרת. ממשק המשתמש של המערכת מתייחס לכל רכיב שמוצג במסך ולא נכלל באפליקציה. ממשק המשתמש של המערכת לכלי רכב (בחבילת הרכיבים CarSystemUI) הוא תוסף של ממשק המשתמש של מערכת Android (בחבילת הרכיבים System UI), שהותאמה במיוחד לכלי רכב.
מהו ממשק המשתמש של המערכת
רכיבים ספציפיים לממשק המשתמש של מערכת הרכב כוללים:
רכיב | תיאור |
---|---|
ממשק מסך הנעילה | מסך שבו משתמשים עוברים אימות לחשבון משתמש ספציפי. |
סרגל הניווט | סרגל מערכת שאפשר למקם בצד ימין, בצד ימין למטה או בצד ימין למעלה של המסך, ויכול לכלול לחצני פנים לניווט לאפליקציות שונות, להפעלה או להשבתה של לוח ההתראות ולבקרה על רכיבי הרכב (כמו בקרת אקלים). הדבר שונה מהטמעה של Android System UI, שמספקת את הלחצנים 'הקודם', 'דף הבית' ו'מקבץ האפליקציות'. |
שורת סטטוס | סרגל המערכת שממוקם לאורך המסך ומשמש כסרגל ניווט. בשורת הסטטוס יש גם פונקציונליות שתומכת באפשרויות הבאות:
|
ממשק המשתמש של המערכת | מתייחס לכל רכיב שמוצג במסך ולא שייך לאפליקציה. |
ממשק המשתמש של החלפת המשתמשים | מסך שבו משתמש יכול לבחור משתמש אחר. |
ממשק המשתמש של האחסון | תיבת דו-שיח שמוצגת כשהנהג משתמש בלחצני עוצמת קול פיזיים כדי לשנות את עוצמת הקול במכשיר. |
איך מערכת הממשק של המשתמש פועלת?
ממשק המשתמש של המערכת הוא אפליקציה ל-Android שפועלת כשהמכשיר מופעל. האפליקציה מופעלת באמצעות השתקפות על ידי SystemServer. נקודות הכניסה הרלוונטיות ביותר לרכיבים של ממשק המשתמש שגלויים למשתמשים מפורטות בהמשך. אפשר להשתמש ברכיבים האלה כדי להתאים אישית את ממשק המשתמש של מערכת Android ליכולות ספציפיות לכלי רכב.
config_statusBarComponent
config_systemUIFactoryComponent
CarSystemUI הוא תוסף לחבילת System UI, כלומר אפשר להשתמש בכיתות ובמשאבים בחבילת System UI ולשנות אותם באמצעות חבילת 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
ממשק המשתמש של מערכת הרכב משתמש במשאבים מ-System UI וגם מחבילות 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
(ב-System UI, לא ב-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>
סרגל הסטטוס נמצא בשכבת חלונות מיוחדת שכוללת גם את חלונית ההתראות, את מתג המשתמש, את ההתראות המוקפצות ואת מסך הנעילה. הפריסות השונות שלהם כלולות ב-super_status_bar.xml
.
שינויים בקוד המקור של ממשק המשתמש של המערכת
יכול להיות שכיסויים לא מספקים את הגמישות הדרושה כדי להתאים אישית את התנהגות ממשק המשתמש של המערכת.
התראה קשה לעדכן שינויים שבוצעו בקוד המקור של Android במהדורות מאוחרות יותר של Android. מומלץ מאוד להרחיב את הקוד של Automotive System UI במקום לשנות את הקוד ישירות. כך אפשר לשדרג את קוד המקור של ממשק המשתמש של מערכת הרכב עם מינימום של קונפליקטים במיזוג, כי כל ההתאמות אישיות מיושמות דרך ממשקי API מוכרים.
אפשר להתאים אישית את רוב ההיבטים של ממשק המשתמש של המערכת באמצעות שתי נקודות הכניסה הבאות:
config_statusBarComponent
config_systemUIFactoryComponent
לדוגמה, אם יוצרים את הכיתה com.android.systemui.statusbar.car.custom.CustomCarStatusBar
שמרחיבה את CarStatusBar
, צריך לעדכן את config_statusBarComponent
כך שיצביע על הרכיב החדש. הרחבה של הכיתה הזו מאפשרת להתאים אישית את רוב הרכיבים שקשורים לסרגל המערכת וללוגיקה של ההתראות.
באופן דומה, אפשר ליצור את CustomCarSystemUIFactory
ולהציב אותו ב-config_systemUIFactoryComponent
. משתמשים במחלקה הזו כדי לעדכן את הפונקציונליות של VolumeUI ושל מסך הנעילה.
התאמה אישית של החלפת משתמשים וביטול הנעילה
במאמר הבא מוסבר איך להתאים אישית את חוויית המעבר של המשתמשים.
מונח | תיאור |
---|---|
מגן מקלדת | תיבת דו-שיח במסך מלא כדי למנוע אינטראקציה לא מכוונת עם האפליקציה שבחזית. הגנה על הפרטיות של כל משתמש כשמגדירים כמה משתמשים. |
תיבת הדו-שיח בטעינה | מסך טעינה שמוצג כשעוברים בין משתמשים. |
מסך נעילה, bouncer | מסך שבו נדרש להזין קוד אימות, קו ביטול נעילה או סיסמה. |
משתמש/ת | משתמש Android. |
בחירת משתמשים | מסך הבחירה של משתמשים שמוצג כשמכשיר מופעל. |
מתג להחלפת משתמשים | מתג המשתמש מוצג כשעוברים בין מסכים מ'הגדרות מהירות'. |
התאמה אישית של החלפת משתמשים
מגן מקלדת ושירות דלתות
ב-Android Automotive OS, המסך של מגן המסך עם בורר המשתמשים מוצג רק כשהמשתמש לוחץ על לחצן הביטול במסך הנעילה. מסך מגן המקלדת מוצג בהמשך.
איור 1. מסך מגן המקלדת
מסך נעילה עם שומר מופיע כשהמשתמש בחר סוג פרטיות כדי לבטל את נעילת המכשיר, כפי שמוצג בהמשך.
איור 2. מסך הנעילה.
כשהנעילה מוגדרת להפעלה ידנית של ההפעלה או ההשבתה, פועלים לפי ההוראות הבאות:
adb shell input keyevent 26
בחירת משתמשים
המסך לבחירת משתמש מוצג כשמכשיר שמשויך לשורת הסטטוס של ממשק המשתמש של הרכב מופעל מחדש, וגם כשמפעלים מחדש את מפות Google. מידע נוסף זמין במאמר FullscreenUserSwitcher
.
איור 3. מסך הבחירה של משתמשים
אפשר להתאים אישית את הפריסה של המסך הזה בקטע car_fullscreen_user_switcher.xml
.
המסך בטעינה
מסך הטעינה מוצג בכל פעם שמתבצע מעבר בין משתמשים, ללא קשר לנקודת הכניסה. לדוגמה, באמצעות בורר המשתמשים או מסך ההגדרות. מסך הטעינה הוא חלק בלתי נפרד מהמסגרת של System UI, והוא ממופה לכיתה הציבורית בשם CarUserSwitchingDialog
.
דוגמה מופיעה באיור 3 שלמעלה.
אפשר להתאים אישית את העיצוב באמצעות Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog
.
כדי להגדיר את המשתמש ב-Android, בתהליך הראשוני של אשף ההגדרה הנהג יכול להגדיר לעצמו שם משתמש. אם לאחר מכן הנהג משייך את המשתמש ב-Android לחשבון Google, שם המשתמש נבחר מהחשבון הזה. עם זאת, אם הנהג מציין שם, למשל DriverB, ואז משייך את שם המשתמש הזה לחשבון Google שלו עם השם Maddy, השם שהוקצה במקור (DriverB) לא ישתנה כי השם הזה הוגדר במפורש. הנהג יכול לשנות את השם רק בתפריט ההגדרות.
אפשר להתאים אישית את הפריסה ב-car_user_switching_dialog.xml.
יצרני ציוד מקורי יכולים להסתיר את סרגל הסטטוס וסרגל הניווט באמצעות העיצוב בשם NoActionBar.Fullscreen
.
(זהו ממשק המשתמש המקורי של המערכת, שעודכן לממשק המשתמש של הרכב). מידע נוסף זמין במאמר התאמה אישית.
יצרני ציוד מקורי יכולים לספק נקודות כניסה בממשק המשתמש כדי להחליף משתמשים, אבל לפעמים התוצאות יכולות להיות לא רצויות. במקרה כזה:
- יצרן הציוד המקורי יוצר את מסך הטעינה (או תיבת הדו-שיח) בהתאמה אישית ומציג אותו.
- ספציפית לממשק המשתמש, יצרן הציוד המקורי מפעיל את מסך הטעינה המותאם אישית כשהמשתמש בוחר את הדרך שבה הוא רוצה לעבור, ואפשר להסתיר אותו כשהמשתמש מסיים את המעבר.
- יצרני הציוד המקורי צריכים להגדיר את חלון העדיפות בהתאם להעדפות שלהם. לדוגמה, סוג חלון בעדיפות גבוהה יותר. רמת העדיפות לא יכולה להיות גבוהה מזו של מסך הנעילה.
- יצרן הציוד המקורי מגדיר את
config_customUserSwitchUi=true
במסגרת הליבהconfig.xml
כפי שמתואר בקטעconfig_customuserswitchui
. כתוצאה מכך, ה-framework לא מציג אתCarUserSwitchingDialog
.
התאמה אישית של מסך הנעילה
מסך הנעילה הוא חלק בלתי נפרד מממשק המשתמש של המערכת, ו-OEM יכולים להתאים אותו אישית.
כדי להתאים אישית את התהליך, מתחילים ב-frameworks/base/packages/CarSystemUI/
.
התאמה אישית של ההגדרה בפעם הראשונה של משתמשים
אשף ההגדרה מבצע הגדרה של משתמש בפעם הראשונה. גם את האפשרות הזו אפשר להתאים אישית. אפשר להשתמש ב-UserManager APIs כדי ליצור משתמש. במקרים מסוימים, אפשר להטמיע את הפעולות האלה ברקע, וכך לזרז את תהליך האשף להגדרה.