הרכיבים שפועלים עם Media מפורטים בטבלה:
| רכיב | תיאור |
|---|---|
| מסך הבית | מייצג פלטפורמות אחרות בממשק המשתמש של הרכב שבהן מוצגת המדיה שמופעלת כרגע ושדרכן אפשר לשלוט בה. ב-AOSP, זהו המסך הראשי שמוצג כשהמערכת מופעלת. במסך הזה, המשתמשים יכולים לראות פרטים של פריט המדיה שמופעל ולבצע קבוצה מוגבלת של פעולות רגילות ומותאמות אישית (לדוגמה, הפעלה והשהיה). |
| ממשק המשתמש של המערכת | מספק פונקציונליות שכוללת אפשרויות ניווט בממשק המשתמש הגלובלי, כמו ניווט אל Media (מדיה). |
| Assistants | Android מספק מנגנונים לאפליקציות שונות של עוזרים קוליים כדי ליצור אינטראקציה עם המערכת. האפליקציות האלה יכולות ליצור אינטראקציה עם מקורות מדיה ברקע (לדוגמה, הפעלת שיר כתוצאה מפקודה קולית), או לנווט למדיה בחזית (לדוגמה, כשמנחים אפליקציית עוזר קולי להציג את ממשק המשתמש של מקור מדיה ספציפי). |
| מרכז האפליקציות | כל האפליקציות ל-Android מתחילות במרכז האפליקציות, כולל מקורות מדיה. אפליקציות מדיה יכולות להציג את בורר מקורות המדיה שלהן, בנוסף למפעיל האפליקציות או במקומו, כנקודת ההתחלה של המדיה. |
| חנות Google Play | כשמשתמשים ב-GAS, כאן המשתמשים מאתרים ומתקינים אפליקציות חדשות במכשיר Android. במקרה של מדיה, אחרי שהאפליקציות מותקנות, המשתמשים מועברים למדיה כדי להשלים את תהליך הכניסה או כדי להתחיל באינטראקציה עם האפליקציה. |
| Media Session Manager | שירות מערכת Android שעוקב אחרי סשנים של מדיה מכל מקורות המדיה ושולט בהם. הוא מספק מנגנונים לזיהוי מתי מקור מדיה הופך למקור המדיה בחזית. אפליקציות מדיה וכל האפליקציות האחרות שמציגות את מקור המדיה שמופעל כרגע (לדוגמה, מסך הבית), משתמשות ב-Media Session Manager כדי לזהות את האירועים האלה ולעדכן את ממשק המשתמש בהתאם. מקורות המדיה מתקשרים עם Media Session Manager באמצעות Media Session API. |
| רדיו | אפליקציה ייעודית לאינטראקציה עם חומרת הרדיו. חיפוש תחנות רדיו, בחירה מהירה של תחנות שזוהו לאחרונה ומעבר בין תדרי רדיו. רכיבי ממשק המשתמש שמשותפים גם ל-Radio וגם ל-Media מאפשרים למשתמש לעבור בין שתי החוויות. |
| Driver Distraction Engine | שירות מערכת Android שמשמש להטלת מגבלות על חוויית המשתמש על סמך מצב הנהיגה של הרכב. בממשק המשתמש של מקורות המדיה לכניסה ולהגדרות (שבו המסך נשלט ישירות על ידי מקורות המדיה), השירות הזה מוודא שלא מוצג תוכן לא בטוח כשהמכונית במצב נהיגה. יצרני ציוד מקורי (OEM) יכולים להתאים אישית את ההגדרה של המצבים האלה ואת האופן שבו המערכת מגיבה במצבים האלה (לדוגמה, על ידי הצגת שכבת-על של מסך חסימה). |
מסלולי המשתמש באפליקציה
הפעלת אפליקציית מדיה
צריך להפעיל את המדיה באמצעות ההגדרה המרומזת הבאה CAR_INTENT_ACTION_MEDIA_TEMPLATE.
הכוונה הזו יכולה לכלול את הפרטים הבאים כתוספים:
-
android.car.intent.extra.MEDIA_COMPONENT(אופציונלי). מחרוזת extra לייצוג השם המפושט של רכיבMediaBrowserServiceבאפליקציית המדיה שאליה המדיה אמורה להתחבר. אם לא מציינים אפליקציה, המדיה מוצגת באפליקציית המדיה שנבחרה כרגע. הכוונה הזו משמשת מנקודות הכניסה הבאות:-
ממשק משתמש של המערכת. משמש כדי לחזור לממשק המדיה או כדי להתחיל להשתמש בו בפעם הראשונה. במקרה הזה, נעשה שימוש ב-Intent שלמעלה ללא תוספים, כדי לגרום לאפליקציית המדיה להציג את אפליקציית המדיה שנבחרה כרגע.
-
מסך הבית, העוזרים הדיגיטליים ומרכז ההתראות. המשתמשים יכולים לעבור אל 'מדיה' כדי להציג את אפליקציית המדיה שנבחרה כרגע. בכל המקרים, מופעלת פעולת Intent משתמעת ללא תוספים.
-
מרכז האפליקציות. כשמשתמשים בוחרים אפליקציית מדיה ממרכז האפליקציות, ה-Intent שלמעלה כולל את התוסף
CAR_EXTRA_MEDIA_COMPONENT, שמכיל את אפליקציית המדיה שנבחרה. המערכת מסמנת את האפליקציה הזו כאפליקציה שנבחרה לאחרונה ומתחברת אליה. פרטים נוספים מופיעים בקטע 'שילוב של מרכז האפליקציות עם מדיה' שבהמשך.
-
מרכז האפליקציות לשילוב מדיה
באפליקציות מדיה אסור לספק פעילות כלשהי עם ההערה android.intent.category.LAUNCHER. כתוצאה מכך, במפעיל האפליקציות (או במקבילה שלו) צריך להטמיע לוגיקה מיוחדת כדי לטפל בשילוב של מקורות מדיה:
-
מרכז האפליקציות צריך לסרוק את המערכת כדי למצוא חבילות שמטמיעות את
MediaBrowserService.SERVICE_INTERFACE. במקרה של חבילות כאלה, מרכז האפליקציות מאחזר את סמל השירות באופן דומה לאופן שבו הוא מאחזר פעילויות אחרות. -
לאחר מכן, מרכז האפליקציות משלב את החבילות האלה עם חבילות שמטמיעות פעילויות של
android.intent.category.LAUNCHER. אם אפליקציה מספקת הטמעה שלMediaBrowserServiceופעילות של מרכז האפליקציות, השירות מקבל עדיפות.בזמן כתיבת המאמר הזה, אף אפליקציה של מקור מדיה לא יכולה לספק פעילות של מרכז האפליקציות.
- דוגמה ללוגיקה הזו מופיעה בקוד AOSP בכתובת
AppLauncherUtils#getAllLauncherApps().
תהליך הכניסה ואפשרויות ההגדרה
אפליקציות מדיה יכולות לכלול פעילות הגדרות שמותאמת לרכב. אפשר להשתמש בפעילות כזו כדי להטמיע תהליכי משתמש שלא נכללים בממשקי ה-API של Android Media, למשל:
- כניסה
- יציאה
- החלפת חשבונות
- התצוגה שאליה המשתמש מחובר כרגע (אם יש כזו)
- הגדרת שירות
פעילות ההגדרות הזו מוצהרת על ידי אפליקציית המדיה עם מסנן הכוונות הבא:
<activity android:name=".AppSettingsActivity" android:exported="true android:theme="@style/SettingsActivity" android:label="@string/app_settings_activity_title"> <intent-filter> <action android:name="android.intent.action.APPLICATION_PREFERENCES"/> </intent-filter> </activity>
הלוגיקה שצריך להטמיע במדיה:
-
בודקים שאפליקציית המדיה שנבחרה כרגע כוללת פעילות עם מסנן ה-Intent שצוין.
-
אם כן, מאפשרים למשתמש לנווט לפעילות.
-
אם ההגבלות על חוויית המשתמש במכונית בתוקף (למשל, המכונית בתנועה), צריך להשבית את האפשרות הזו כי פעילות ההגדרות היא לא ממשק משתמש שעבר אופטימיזציה לנהג.
טיפול בשגיאות וכניסה לחשבון
האפליקציה 'מדיה' מקיימת אינטראקציה עם אפליקציות מדיה באמצעות Android Media Session API. כחלק מה-API הזה, Media מקבלת אובייקט PlaybackState, שמעביר את המצב הנוכחי של אפליקציית המדיה.
תהליך הכניסה מתחיל כשאפליקציית המדיה משנה את הערך של PlaybackState ל-STATE_ERROR, כולל קוד שגיאה ספציפי (פרטים בהמשך). במקרה כזה, באפליקציית המדיה מוצג תיאור השגיאה ומוצג רכיב שמאפשר לעבור לפעילות של כניסה לחשבון שהוטמעה באפליקציית המדיה.
אפליקציות יכולות להשתמש באותו תהליך כדי לסמן מצבי שגיאה אחרים (לדוגמה, שגיאה בקישוריות לשרת).
כחלק מטיפול רגיל בשגיאות, Media חייבת לבדוק את הקלט הבא.PlaybackState
-
PlaybackStateקוד שגיאה ששווה ל-PlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED. האות הזה מציין שאפליקציית המדיה דורשת כניסה לחשבון כדי להמשיך לפעול. יכולים להתקבל קודי שגיאה אחרים, שיצביעו על סוגים אחרים של מצבי שגיאה. -
הודעת השגיאה
PlaybackState(מוגדרת על ידי אפליקציות מדיה באמצעות השיטהPlaybackStateCompat.Builder#setErrorMessage) מכילה הסבר שקל להבין (לדוגמה, 'לא נכנסת לחשבון'). ההודעה הזו צריכה להיות מוצגת למשתמש, והיא צריכה להיות מותאמת להפחתת הסחת דעת (DO). -
אופציונלי,
PlaybackStateיכול לכלול את התוספים הבאים (מוגדרים על ידי אפליקציות מדיה באמצעות השיטהPlaybackStateCompat.Builder#setExtras) עם המפתחות הבאים.-
android.media.extras.ERROR_RESOLUTION_ACTION_LABEL. מגדירים מחרוזת שמכילה את ההודעה שמוצגת למשתמש כשהוא לוחץ על הלחצן כדי להתחיל את תהליך הכניסה. -
android.media.extras.ERROR_RESOLUTION_ACTION_INTENT. מגדירים אתPendingIntentכך שהפעלתו תתרחש כשהמשתמש ילחץ על הלחצן שצוין למעלה. הפעולה הזוPendingIntentמפנה לפעילות מותאמת אישית של כניסה לחשבון שהוטמעה על ידי אותה אפליקציית מדיה.
-
-
המצב של
PlaybackStateשווה ל-STATE_ERROR. האות הזה מציין שאי אפשר לבצע פעולות אחרות עד שהכניסה לחשבון תושלם.