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

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

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

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

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

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

ממשק המשתמש של המערכת הוא אפליקציית אנדרואיד הפועלת כאשר מכשיר מופעל. האפליקציה מופעלת באמצעות השתקפות על ידי SystemServer . נקודות הכניסה הרלוונטיות ביותר להיבטים גלויים למשתמש של ממשק המשתמש של המערכת מפורטות להלן. השתמש ברכיבים אלה כדי להתאים אישית את ממשק המשתמש של מערכת Android עבור יכולות ספציפיות לרכב.

  • config_statusBarComponent
  • config_systemUIFactoryComponent

CarSystemUI היא הרחבה של חבילת System UI, כלומר ניתן להשתמש במחלקות ומשאבים בחבילת System UI ולעקוף אותם על ידי חבילת CarSystemUI.

התאם אישית את ממשק המשתמש של המערכת

שכבות-על

בעוד שאתה יכול לשנות את קוד המקור של אנדרואיד כדי להתאים אישית את ממשק המשתמש של המערכת, פעולה זו מקשה ומורכבת יותר ליישם עדכוני אנדרואיד עתידיים. במקום זאת, אנדרואיד תומך בשימוש בספריית שכבת-על, המאפשרת לך להחליף קבצי משאבים מבלי לשנות את קוד המקור. במערכת ה-build של אנדרואיד, מערכת השכבות עוקפת קבצים בצורה מבוקרת. כל הקבצים ששונו מזוהים בבירור מבלי לחצות את כל העץ של קוד המקור של AOSP.

קובצי שכבת-על חייבים להיות ממוקמים בספריית PRODUCT_PACKAGE_OVERLAYS וחייבים להיות בעלי אותן תיקיות משנה בדיוק כמו מבנה השורש המקורי של AOSP. עבור Android 10 ומעלה, PRODUCT_PACKAGE_OVERLAYS מוגדר ל:

PRODUCT_PACKAGE_OVERLAYS := packages/services/Car/car_product/overlay

ממשק המשתמש של מערכת הרכב משתמש במשאבים מממשק המשתמש של מערכת וחבילות 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>

שורת המצב שוכנת בשכבת חלונות מיוחדת הכוללת גם את לוח ההתראות, מחליף המשתמש, הודעות ראש למעלה (HUNs) ומגן המקשים. הפריסות השונות עבור אלה כלולות ב- super_status_bar.xml .

שינויים בקוד המקור של ממשק המשתמש של המערכת

ייתכן ששכבות-על לא יספקו את הגמישות הדרושה להתאמה אישית מספקת של התנהגות ממשק המשתמש של המערכת.

עֵרָנִי. קשה לעדכן שינויים שבוצעו בקוד המקור של אנדרואיד במהדורות מאוחרות יותר של אנדרואיד. אנו ממליצים בחום להרחיב את קוד ממשק המשתמש של מערכת הרכב במקום לשנות ישירות את הקוד. בדרך זו, ניתן לשדרג את קוד המקור של ממשק המשתמש של מערכת הרכב עם התנגשויות מיזוג מינימליות מכיוון שכל ההתאמות האישיות מיושמות באמצעות משטחי API ידועים.

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

  • config_statusBarComponent
  • config_systemUIFactoryComponent

לדוגמה, אם תיצור מחלקה בשם com.android.systemui.statusbar.car.custom.CustomCarStatusBar , שמרחיבה את CarStatusBar , עדכן את config_statusBarComponent כדי להצביע על רכיב חדש זה. הרחבת מחלקה זו מאפשרת התאמה אישית של רוב האלמנטים הנוגעים לסרגל המערכת וללוגיקת ההתראות.

באופן דומה, אתה יכול ליצור CustomCarSystemUIFactory ולמקם אותו ב- config_systemUIFactoryComponent . השתמש במחלקה זו כדי לעדכן את הפונקציונליות של VolumeUI ומסך הנעילה.

התאם אישית את החלפת המשתמש וביטול הנעילה

החומר הבא מתאר כיצד להתאים אישית את חוויית החלפת המשתמש.

טווח תיאור
מגן מקשים דו-שיח במסך מלא כדי למנוע אינטראקציה מקרית עם אפליקציית החזית. מגן על הפרטיות של כל משתמש כאשר מספר משתמשים מוגדרים.
דו-שיח טוען מסך הטעינה המוצג בעת מעבר בין משתמשים.
מסך נעילה, סדרן מסך המחייב אדם להזין קוד PIN, תבנית או סיסמה.
מִשׁתַמֵשׁ משתמש אנדרואיד.
בוחר משתמשים מסך בוחר המשתמש מוצג בעת אתחול התקן.
מחליף משתמשים מחליף משתמש מוצג בעת החלפת מסכים מהגדרות מהירות.

התאם אישית את החלפת המשתמש

מגן מקשים וסדרן

במערכת ההפעלה Android Automotive, מסך Keyguard עם בוחר משתמשים מוצג רק כאשר משתמש לוחץ על הלחצן 'ביטול' במסך הנעילה. מסך מגן המקשים מוצג להלן.

מסך מגן מקשים

איור 1. מסך מגן מקשים

מסך נעילה עם סדרן מוצג כאשר המשתמש בחר סוג פרטיות שבאמצעותו יבטל את נעילת המכשיר, כפי שמוצג להלן.

מסך נעילה

איור 2. מסך נעילה.

כאשר הנעילה מוגדרת להפעיל או לכבות את ההפעלה באופן ידני, השתמש בהוראות הבאות:

adb shell input keyevent 26

בוחר משתמשים

מסך בוחר המשתמש מוצג כאשר התקן המשולב בשורת המצב של ממשק המשתמש של המערכת ובמפות מופעל מחדש. למידע נוסף, ראה FullscreenUserSwitcher .

מסך טעינה

איור 3. מסך בוחר משתמשים

ניתן להתאים את הפריסה של מסך זה ב- car_fullscreen_user_switcher.xml .

מסך טעינה

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

ניתן להתאים אישית את ערכת הנושא באמצעות Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog .

כדי להגדיר את משתמש אנדרואיד, זרימת אשף ההתקנה הראשונית מאפשרת לנהג להגדיר לעצמו שם משתמש. אם הנהג משייך את משתמש האנדרואיד לחשבון Google, שם המשתמש נבחר מתוך חשבון זה. עם זאת, אם הנהג מציין שם, למשל DriverB, ולאחר מכן משייך את שם המשתמש הזה לחשבון Google שלו עם השם של Maddy, השם שהוקצה במקור (DriverB) לא ישתנה מכיוון שהשם הזה הוגדר במפורש. הנהג יכול לשנות את השם בתפריט ההגדרות בלבד.

ניתן להתאים את הפריסה ב- car_user_switching_dialog.xml .

יצרני ציוד מקורי יכולים להסתיר את סרגל הסטטוס ואת סרגל הניווט באמצעות ערכת הנושא בשם NoActionBar.Fullscreen . (זהו ממשק המשתמש המקורי של המערכת, מעודכן עבור ממשק המשתמש הייחוס לרכב.) למידע נוסף, ראה התאמה אישית .

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

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

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

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

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

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