רכיבי מערכת וזרימות משתמשים

התרשים הבא ממחיש את הרכיבים המקיימים אינטראקציה עם מדיה:

רכיבי מערכת

איור 1. רכיבי המערכת

האלמנטים באיור זה מתוארים בטבלה:

רְכִיב תיאור
מסך הבית מייצג משטחים אחרים בממשק המשתמש של הרכב שמציגים ושולטים במדיה המתנגנת כעת. ב-AOSP, זהו המסך הראשי המוצג כאשר המערכת מופעלת. ממסך זה, משתמשים יכולים להציג פרטים של פריט המדיה המושמע ולבצע קבוצה מוגבלת של פעולות סטנדרטיות ומותאמות אישית (לדוגמה, הפעל והשהה).
ממשק המשתמש של המערכת מספק פונקציונליות הכוללת אפשרויות ניווט גלובליות של ממשק המשתמש, כגון ניווט למדיה.
עוזרים אנדרואיד מספקת מנגנונים לאפליקציות עוזרות קוליות שונות לאינטראקציה עם המערכת. אפליקציות אלו יכולות לקיים אינטראקציה עם מקורות מדיה ברקע (לדוגמה, השמעת שיר כתוצאה מפקודה קולית), או לנווט אל מדיה בחזית (לדוגמה, כאשר אפליקציית עוזר קולי מקבלת הוראה להציג את ממשק המשתמש של מקור מדיה ספציפי).
משגר אפליקציות כל אפליקציות האנדרואיד מתחילות במפעיל היישומים, כולל מקורות מדיה. מדיה יכולה להציג את בורר מקור המדיה שלה, משלים או מחליף את משגר האפליקציות כמקום ההתחלה למדיה.
חנות הגוגל סטור כאשר משתמשים ב-GAS, זה המקום שבו משתמשים מאתרים ומתקינים אפליקציות חדשות במכשיר אנדרואיד. עבור מדיה, לאחר התקנת אפליקציות, משתמשים מופנים אל המדיה כדי להשלים את תהליך הכניסה או להתחיל ליצור אינטראקציה עם האפליקציה.
מנהל סשן מדיה שירות מערכת אנדרואיד העוקב אחר הפעלות מדיה ושולטות בהן מכל מקורות המדיה. הוא מספק מנגנונים לזיהוי מתי מקור מדיה הופך למקור המדיה בחזית . מדיה, וכל האפליקציות האחרות המציגות את מקור המדיה המתנגן כעת (לדוגמה, מסך הבית), השתמשו ב-Media Session Manager כדי לזהות אירועים אלו ולעדכן את ממשק המשתמש בהתאם. מקורות מדיה מקיימים אינטראקציה עם Media Session Manager באמצעות ממשק ה- API של Media Session .
רָדִיוֹ אפליקציה מיוחדת לאינטראקציה עם חומרת הרדיו. רדיו מחפש תחנות רדיו, בוחר במהירות תחנות שזוהו לאחרונה ומעבר בין רצועות רדיו. רכיבי ממשק משתמש משותפים גם לרדיו וגם למדיה מאפשרים למשתמש לעבור בין שתי החוויות.
מנוע הסחת דעת לנהג שירות מערכת אנדרואיד משמש להטלת הגבלות UX בהתבסס על מצב הנהיגה של המכונית. עבור כניסה למקורות מדיה והגדרות UX (כאשר המסך נשלט ישירות על ידי מקורות המדיה), שירות זה מבטיח שלא יוצג תוכן לא בטוח כאשר המכונית במצב נהיגה. יצרני OEM יכולים להתאים אישית את ההגדרה של מצבים אלה וכיצד המערכת מגיבה במצבים אלה (לדוגמה, על ידי הצגת שכבת-על מסך חוסמת).

זרימות משתמש

השקת אפליקציית מדיה

התהליך שמפעיל את Media מופיע למטה.

השקת אפליקציית מדיה

איור 2. השקת אפליקציית מדיה

יש להפעיל את המדיה באמצעות ה- CAR_INTENT_ACTION_MEDIA_TEMPLATE המשתמע הבא. כוונה זו יכולה לכלול את המידע הבא כתוספות :

  • android.car.intent.extra.MEDIA_COMPONENT ( אופציונלי ). מחרוזת נוספת כדי לייצג את שם הרכיב השטוח של MediaBrowserService באפליקציית המדיה שאליה המדיה אמורה להתחבר. אם לא מסופק, Media מציגה את אפליקציית המדיה שנבחרה כעת. כוונה זו משמשת מנקודות הכניסה הבאות:

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

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

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

משגר אפליקציות לשילוב מדיה

אפליקציות מדיה אינן מורשות לספק פעילות כלשהי עם הערות בקטגוריית android.intent.category.LAUNCHER . כתוצאה מכך, מפעיל האפליקציות (או המקביל לו) חייב ליישם היגיון מיוחד כדי לטפל באינטגרציה של מקור מדיה:

  • מפעיל האפליקציות חייב לסרוק את המערכת לאיתור חבילות המטשמות MediaBrowserService.SERVICE_INTERFACE . עבור חבילות אלה, מפעיל האפליקציות מביא את סמל השירות בדומה לזה המשמש לאחזור פעילויות אחרות.

  • לאחר מכן, משגר האפליקציות משלב את החבילות הללו עם אלה שמטמיעות פעילויות android.intent.category.LAUNCHER . אם אפליקציה מספקת יישום MediaBrowserService ופעילות משגר, השירות מקבל עדיפות.

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

  • דוגמה להיגיון זה ניתן למצוא בקוד AOSP ב- AppLauncherUtils#getAllLauncherApps() .

זרימת כניסה ואפשרויות תצורה

אפליקציות מדיה יכולות לכלול פעילות הגדרות מותאמת לרכב. ניתן להשתמש בפעילות כזו כדי ליישם זרימות משתמשים שלא טופלו על ידי ממשקי ה-API של מדיה של Android, לדוגמה:

  • להתחבר
  • התנתק
  • החלפת חשבון
  • תצוגה שאליה המשתמש מחובר כעת (אם יש)
  • תצורת שירות

זרימת סימן-n

איור 3. זרימת כניסה

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

<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>

התקשורת חייבת ליישם את ההיגיון הבא:

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

  • אם כן, אפשר למשתמש לנווט אל הפעילות.

  • אם בתוקף הגבלות UX של רכב (לדוגמה, המכונית בתנועה), יש להשבית את התקציב הזה מכיוון שפעילות ההגדרות אינה ממשק משתמש מותאם לנהג.

טיפול בשגיאות וכניסה נדרשת

מדיה מקיימת אינטראקציה עם אפליקציות מדיה באמצעות ה-Android Media Session API. כחלק מ-API זה, מדיה מקבלת אובייקט PlaybackState , אשר מתקשר את המצב הנוכחי של אפליקציית המדיה.

תהליך הכניסה מתחיל כאשר אפליקציית המדיה משנה PlaybackState ל- STATE_ERROR , כולל קוד שגיאה ספציפי (ראה פרטים למטה). כאשר זה קורה, Media מציגה את תיאור השגיאה ואפשרות לנווט לפעילות כניסה המיושמת על ידי אפליקציית המדיה.

אותה זרימה יכולה לשמש אפליקציות כדי לאותת על מצבי שגיאה אחרים (לדוגמה, שגיאת קישוריות שרת).

טיפול בשגיאות

איור 4. טיפול בשגיאות

כחלק מטיפול רגיל בשגיאות 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 . זה מסמן ששום פעולה אחרת לא אפשרית עד השלמת הכניסה.