אפשר להשתמש בממשק משתמש ניתן להתאמה כדי ליצור חוויות משתמש מתוחכמות, דינמיות ורב-חלוניות ברכבים. ממשק משתמש ניתן להתאמה:
מערכת חלונות גמישה.
מצמצם את הסיכונים, העלויות והמורכבויות ההנדסיות שקיימים ב-Compatibility Test Suite (CTS) בהטמעות של ממשקי משתמש.
ממשק משתמש שניתן להתאמה תומך במגוון רחב של עיצובים מודרניים של מערכות מולטימדיה ברכב (IVI) שדורשים סידורי חלונות דינמיים, וגם בעיצובים מסורתיים עם סידורי חלונות סטטיים.
ב-Android 17 נוספו התכונות הבאות שספציפיות לניהול חלונות מתקדם:
- הטמעה של חלוניות התראות קופצות
- התאמה אישית של סרגלי המערכת
- איך ממקסמים את התאימות של הבדיקה באמצעות WindowManager invariants
- הטמעה של אשף ההגדרה
דוגמאות לחוויות
ממשק משתמש שניתן להתאמה מאפשר מגוון אינסופי של הגדרות חלונות. ריכזנו כאן כמה תרחישים לדוגמה שנוצרו כדי להמחיש את השימוש בממשק משתמש ניתן להרחבה:
רקע של מפה עם אפליקציות צפות
הגדרה של רקע מפה עם אפליקציות אחרות שצפות מעל.
רקע האפליקציה
הגדרת רקע לאפליקציה עם חלוניות צפות.
אפליקציה מוצמדת מתחת לאפליקציות אחרות
אפליקציה מוצמדת, כמו מאגר ווידג'טים, עם אפליקציות אחרות שמופעלות מעליה.
חלונית צפה מותנית
חלונית צפה מותנית שמופיעה רק כשמתקיימים תנאים ספציפיים, למשל כשמפעילים מדיה או כשמופעלת התראה.
אפליקציה מוצמדת קרוב לנהג
אפליקציה מוצמדת שממוקמת קרוב יותר לנהג.
פריסת מסך מפוצל
פריסה של מסך מפוצל שבה מוצגות שתי אפליקציות זו לצד זו.
מסך מפוצל אינטראקטיבי
פריסה אינטראקטיבית של מסך מפוצל שמאפשרת שינוי גודל דינמי.
פריסת עוגנים מרובים למסכים גדולים
פריסת עוגנים מרובים שמיועדת למסכים גדולים.
קרוסלת האפליקציות במסך הבית
פריסת מסך הבית עם קרוסלת אפליקציות.
הטבות ותאימות
היתרונות של ממשק משתמש שניתן להתאמה כוללים:
סיכון נמוך יותר בבדיקה: המסגרת מאושרת מראש ועומדת בדרישות של CTS, ולכן הסיכון העיקרי לכשלים בבדיקה בשלב מאוחר במחזור התוכנית מבוטל. ממשק משתמש שניתן להתאמה יכול לחסוך חודשים של מאמץ הנדסי ולהאיץ את תהליך ההתאמה לתקנות.
יותר גמישות בעיצוב: יכולת מוכחת ליצור מחדש מודלים מורכבים רבים של חלונות לרכב. ממשק משתמש שניתן להרחבה תומך בעיצובים שאפתניים ומובחנים מאוד.
פחות מורכבות בהטמעה: הפשטה למודל XML ברמה גבוהה שמבוסס על הגדרות מקטינה את מחסום הכניסה ללוגיקה מותאמת של חלונות.
ביצועים טובים יותר: ממשק המשתמש ניתן להתאמה ופועל על בסיס חלונות בעלי ביצועים גבוהים, שמשולבים באופן מלא עם Android רגיל. המעברים מתבצעים בצורה חלקה, ומאפשרים אופטימיזציה ישירה.
אבני בניין מרכזיות
ממשק משתמש שניתן להרחבה מצמצם את הצורך בקוד ספציפי ליצרן הציוד המקורי, מקל על העדכון ומפחית את הסיכונים בהשקה על ידי מניעת בעיות והפחתת הסיכוי לבעיות באישור.
הגישה שמבוססת על XML נותנת מענה לאתגרים נפוצים בניהול מערכות מורכבות של חלונות ב-AAOS, כמו מיקום מדויק, קונפליקטים של סדר Z ומיקוד באפליקציה.
ממשק משתמש שניתן להתאמה מספק את אבני הבניין הבסיסיות האלה.
חלונית
חלונית היא מאגר מלבני בסיסי במסך. כל חלונית ממופה למשימת root ייעודית לניהול עצמאי. חלונית יכולה לארח משימות של אפליקציות (TaskPanel) או תוכן מבוסס-תצוגה, כמו ווידג'טים (DecorPanel). מידע נוסף זמין במאמר הגדרת חלונית.
וריאנט
וריאציה מגדירה מצב חזותי ספציפי של חלונית וכוללת מאפיינים כמו bounds (מיקום וגודל), visibility, layer (סדר Z) ורדיוס corner. לכל חלונית יכולות להיות וריאציות, כמו opened, closed או minimized. מידע נוסף זמין במאמר שימוש בווריאציה לעיצוב מצב חזותי.
מעבר
מעבר מגדיר איך חלונית עוברת מהמצב הנוכחי שלה fromVariant למצב חדש, toVariant. Event מפעיל את המעבר, שמגדיר את האנימציה שבה החלונית משתמשת במהלך שינוי המצב. הלוח אמור לעבור מהמצב הנוכחי שלו למצב toVariant. לצורך סנכרון, מנהל החלונות הראשי מנפיש ומתאם את כל המעברים.
- אירוע: טריגר להפעלת שינוי בממשק המשתמש. יצרן ציוד מקורי או המערכת יכולים להגדיר מראש טריגר. לדוגמה,
_System_OnHomeEvent,_System_TaskOpenEventאו לחיצה על לחצן ניווט בהתאמה אישית.
לדוגמה, ממשק משתמש ניתן להרחבה משתמש באירועים כדי להפעיל מעברים. המעברים האלה מציגים אנימציה של חלונית מווריאציה אחת לאחרת כדי להציג שינויים דינמיים בממשק המשתמש. ממשק משתמש ניתן להרחבה מעביר את השינויים האלה לאפליקציות אחרות במערכת כדי להתאים את התוכן לפי הצורך. הגדרת קשרי גומלין בממשק המשתמש ב-XML מאפשרת לכם:
מציינים התנהגויות מורכבות בממשק המשתמש: מגדירים אינטראקציות מורכבות בממשק המשתמש.
סידור מערכות חלונות: שליטה במיקום ובשכבות של החלונות.
הטמעת עיצובים ויזואליים: חשוב להקפיד על מיתוג ואסתטיקה עקביים.
צמצום המורכבות של הקוד: צמצום הצורך בפיתוח נרחב של קוד בהתאמה אישית.
מידע נוסף זמין במאמר בנושא הגדרת מעבר.
כפתורים בממשק המשתמש של המערכת
בנוסף להפעלת כוונות, CarSystemBarButtons יכול להפעיל אירוע של ממשק משתמש ניתן לשינוי כשמקישים עליו באמצעות המאפיינים event, selectedEvent ו-unselectedEvent.
event מתאר את האירוע שיופעל כשמקישים על הלחצן. אם נדרש בקרה מפורטת יותר על אירוע, משתמשים במאפיינים selectedEvent ו-unselectedEvent כדי לציין את האירוע שיופעל כשבוחרים את הלחצן או מבטלים את הבחירה בו, בהתאמה.
מתי כדאי להטמיע את ממשק המשתמש של המערכת
בקטע הזה מתוארים שימושים אופטימליים בממשק משתמש ניתן להתאמה.
- יצירת פריסות קבועות של כמה חלוניות
- הטמעה של סצנת בית דינמית
- איך משתמשים בשכבות-על הקשריות
- עיצוב של אינטראקציות חלונית מורכבות
יצירת פריסות קבועות עם כמה חלוניות
ליצור חוויה מרובת אזורים שבה אזורים שונים במסך מוקדשים באופן קבוע לפונקציות ספציפיות. לדוגמה, אמצעי בקרה ייעודיים למדיה, פס בקרת אקלים או מפה במסך מלא.
משתמשים ב-TaskPanels לאפליקציות ראשיות (כמו ניווט) וב-DecorPanels לרכיבי ממשק משתמש, בצורה של תצוגות, שצריך למקם בין TaskPanels.
הטמעה של סצנת בית דינמית
הטמעה של סצנת בית שמורכבת מכמה חלוניות של אפליקציות שמוצגות בו-זמנית ואינטראקטיביות. לדוגמה, מפה, נגן מדיה ורשת אפליקציות.
כדי להעביר את כל הלוחות הרלוונטיים לגרסאות הבית שלהם opened או default, צריך להגדיר את _System_HomeEvent.
איך משתמשים בשכבות-על הקשריות
מיקום רכיבים בממשק המשתמש שלא שייכים לאפליקציה, כמו ווידג'טים הקשריים, מיתוג מותאם אישית וסרגלי גרירה שאפשר להנפיש בתיאום עם משימות האפליקציה.
משתמשים ב-DecorPanels לכל הרכיבים שהם רק קישוטיים או שמארחים ווידג'טים. אם ווידג'ט מארח אפליקציה שניתן להפעיל אותה ושהיא פועלת באופן מלא, הערך האופטימלי הוא Panel > TaskPanel. משתמשים ב-DecorPanels לרכיבים בממשק המשתמש שמבוססים על תצוגה, כשצריך לסנכרן את השכבות עם השכבות של TaskPanel.
עיצוב של אינטראקציות חלונית מורכבות
עיצוב פעולות מתקדמות שמבוססות על משתמשים, כמו שינוי גודל דינמי של חלונית אפליקציה או התאמה של תצוגות לוח המחוונים על סמך התוכן שמוצג במסך הראשי.
הגדרת Events מותאם אישית להפעלת Transitions ספציפי שאינו סטנדרטי במערכת.
הרחבת פריסות של מערכות IVI לתא נהג דיגיטלי מאוחד
ממשק משתמש ניתן להרחבה שמנהל חלונות מרובי-חלוניות (TaskPanel ו-DecorPanel) במסך הראשי של מערכת המידע והבידור (display0) במכונה הווירטואלית SDV IVI. אפשר לשלב בין בטיחות התצוגה לבין ממשק משתמש שניתן להתאמה כדי לעדכן את תצוגות לוח המכוונים כשמשנים את פריסת התצוגה הראשית:
- פעולות בממשק משתמש שניתנות להרחבה (
SDV IVIמכונה וירטואלית): כשמצב החלונית משתנה בתצוגה הראשית, ממשק משתמש שניתן להרחבה יכול לשלוח כוונה באמצעות<Action>ב-xml/scalable_ui_actions.xmlכדי להודיע לרכיבי האשכול על שינויים בפריסה או במצב. מידע נוסף מופיע במאמר בנושא הגדרת פעולה. - DriverUI (
SDV IVIמכונה וירטואלית): פועל בתצוגת האשכול (display1) כאפליקציית מערכת שהופעלה על ידיClusterHomeManagerונבנתה באמצעותautomotive-design-compose. DriverUIמעבד תוכן של אשכולות שאינם קשורים לבטיחות (כמו מפות, מדיה ושיחות טלפון) ומטפל בעדכוני סטטוס ממערכת ה-IVI. - SDV Gateway on IVI (
SDV IVIVM):DriverUIמשתמש ב-SDV Gateway Clientכדי להתחבר אל High availability renderer (HAR) דרך gRPC (driverui.proto).DriverUIשולח עדכונים של מצב האשכול (כמו וריאציות של פריסות, טוקנים של ערכות נושא ושינויים של לוקאל) יחד עם הודעות תקופתיות של אותות חיים. -
HARו-Safety Monitor (SDV MediaVM): פועלים ב-SDV MediaVM נפרד כדי להציג רכיבים קריטיים לבטיחות (כמו מהירות, הילוך, נורות אזהרה, צלצולים ופידים של מצלמה אחורית). בזמן שהוא מקבל פעימות לב מ-DriverUI,HARשומר על אזורי האשכולות של Android שקופים, כך שהתוכן שלDriverUIמשתלב עם שכבות העל של הבטיחות שלHAR. אם המכשירSDV IVIנמצא בתהליך הפעלה או לא זמין,HARמציג placeholder של חזרה לגרסה קודמת. - הגדרת OEM: כדי להגדיר את התהליך הזה, צריך להגדיר טריגרים של
<Event>וכוונות של<Action>ב-xml/scalable_ui_actions.xmlב-SDV IVI, לעדכן את קובץ העיצוב של Figma ואת מיפויי האותות שלConfig.jsonעבור ערכת הכלים לעיצוב בטיחות, ולהטמיע את שכבת ההפשטה של פלטפורמת HAR (PAL) עבור חומרת היעד.