מערכת ההפעלה Android Automotive (AAOS) מבוססת על מחסנית השמע של אנדרואיד כדי לתמוך במקרים של שימוש להפעלה כמערכת המידע והבידור ברכב. AAOS אחראית על צלילי מידע בידור (כלומר מדיה, ניווט ותקשורת) אך אינה אחראית ישירות לצלצולים ואזהרות שיש להם דרישות זמינות ותזמון קפדניות.
בעוד ש-AAOS מספקת אותות ומנגנונים שיעזרו לרכב לנהל אודיו, בסופו של דבר זה תלוי ברכב לבצע את הקריאה לגבי אילו צלילים יש להשמיע לנהג ולנוסעים, מה שמבטיח שצלילים קריטיים לבטיחות וצלילי רגולציה יישמעו כראוי ללא הַפרָעָה.
מכיוון ש-AAOS ממנפת את ערימת האודיו של אנדרואיד, יישומי צד שלישי המנגנים אודיו לא צריכים לעשות שום דבר שונה מאשר בטלפונים. ניתוב האודיו של האפליקציה מנוהל אוטומטית על ידי AAOS כמתואר בתצורת מדיניות האודיו .
מכיוון ש-Android מנהלת את חווית המדיה של הרכב, מקורות מדיה חיצוניים כגון מקלט הרדיו צריכים להיות מיוצגים על ידי אפליקציות, שיכולות להתמודד עם מיקוד אודיו ואירועי מפתח מדיה עבור המקור.
צלילים וזרמים של אנדרואיד
מערכות שמע לרכב מטפלות בצלילים ובזרמים הבאים:
איור 1. דיאגרמת ארכיטקטורה ממוקדת זרמים.
אנדרואיד מנהלת את הצלילים המגיעים מאפליקציות אנדרואיד, שולטת באפליקציות הללו ומנתבת את הצלילים שלהן למכשירי פלט ב-HAL בהתבסס על סוג הצליל:
זרמים לוגיים , הידועים כמקורות במינוח הליבה של אודיו, מתויגים עם תכונות אודיו .
לזרמים פיזיים , הידועים כמכשירים במינוח אודיו הליבה, אין מידע הקשר לאחר ערבוב.
לצורך אמינות, צלילים חיצוניים (המגיעים ממקורות עצמאיים, כגון פעמוני אזהרה של חגורות בטיחות) מנוהלים מחוץ לאנדרואיד, מתחת ל-HAL או אפילו בחומרה נפרדת. מיישמי מערכת חייבים לספק מיקסר המקבל זרם אחד או יותר של קלט קול מאנדרואיד ולאחר מכן משלב את הזרמים הללו בצורה מתאימה עם מקורות הקול החיצוניים הנדרשים על ידי הרכב. ה- Android Control HAL מספק מנגנון שונה לצלילים שנוצרו מחוץ לאנדרואיד כדי לתקשר בחזרה לאנדרואיד:
- בקשת מיקוד אודיו
- מגבלות עלייה או נפח
- שינויי רווח ונפח
יישום האודיו HAL והמיקסר החיצוני אחראים לוודא שהצלילים החיצוניים הקריטיים לבטיחות נשמעים ולערבוב בזרמים המסופקים על ידי אנדרואיד וניתובם לרמקולים מתאימים.
צלילי אנדרואיד
לאפליקציות עשויות להיות נגן אחד או יותר המקיימים אינטראקציה דרך ממשקי ה-API הסטנדרטיים של אנדרואיד (לדוגמה, AudioManager לבקרת מיקוד או MediaPlayer לסטרימינג) כדי לפלוט זרם לוגי אחד או יותר של נתוני אודיו. נתונים אלה יכולים להיות מונו ערוץ יחיד או 7.1 סראונד, אך הם מנותבים ומטופלים כמקור יחיד. זרם האפליקציה משויך ל- AudioAttributes שנותנים למערכת רמזים לגבי אופן הביטוי של האודיו.
הזרמים הלוגיים נשלחים דרך AudioService ומנותבים לאחד (ורק אחד) מזרמי הפלט הפיזיים הזמינים, שכל אחד מהם הוא פלט של מיקסר בתוך AudioFlinger. לאחר ערבוב תכונות האודיו לזרם פיזי, הן אינן זמינות עוד.
לאחר מכן כל זרם פיזי מועבר ל- Audio HAL לצורך רינדור בחומרה. באפליקציות רכב, חומרת רינדור יכולה להיות קודקים מקומיים (בדומה למכשירים ניידים) או מעבד מרוחק ברחבי הרשת הפיזית של הרכב. כך או כך, תפקידו של יישום Audio HAL לספק את נתוני הדגימה בפועל ולגרום להם להיות נשמעים.
זרמים חיצוניים
זרמי סאונד שאסור לנתב דרך אנדרואיד (מסיבות הסמכה או תזמון) עשויים להישלח ישירות למיקסר החיצוני. החל מ-Android 11, ה-HAL יכול כעת לבקש מיקוד עבור צלילים חיצוניים אלה כדי ליידע את אנדרואיד כך שהוא יוכל לנקוט בפעולות מתאימות כגון השהיית מדיה או מניעת מיקוד מאחרים.
אם זרמים חיצוניים הם מקורות מדיה שאמורים לקיים אינטראקציה עם סביבת הסאונד ש-Android מייצרת (לדוגמה, הפסק את השמעת MP3 כאשר מקלט חיצוני מופעל), הזרמים החיצוניים האלה צריכים להיות מיוצגים על ידי אפליקציית Android. אפליקציה כזו תבקש מיקוד אודיו בשם מקור המדיה במקום ה-HAL, ותגיב להודעות מיקוד על ידי הפעלה ועצירה של המקור החיצוני לפי הצורך כדי להשתלב במדיניות המיקוד של אנדרואיד.
האפליקציה אחראית גם לטיפול באירועי מפתח במדיה כגון הפעלה והשהייה. מנגנון אחד שהוצע לשליטה במכשירים חיצוניים מסוג זה הוא HwAudioSource
. למידע נוסף, ראה חיבור התקן קלט ב-AAOS .
התקני פלט
ברמת Audio HAL, ההתקן מסוג AUDIO_DEVICE_OUT_BUS
מספק התקן פלט גנרי לשימוש במערכות שמע לרכב. התקן האוטובוס תומך ביציאות הניתנות להתייחסות (כאשר כל יציאה היא נקודת הסיום לזרם פיזי) וצפוי להיות סוג התקן הפלט הנתמך היחיד ברכב.
מימוש מערכת יכול להשתמש ביציאת אוטובוס אחת עבור כל צלילי האנדרואיד, ובמקרה זה אנדרואיד מערבבת הכל יחד ומעבירה אותו כזרם אחד. לחלופין, ה-HAL יכול לספק יציאת אוטובוס אחת לכל CarAudioContext כדי לאפשר אספקה במקביל מכל סוג צליל. זה מאפשר למימוש HAL לערבב ולבלוע את הצלילים השונים כרצונך.
הקצאת הקשרי אודיו להתקני פלט מתבצעת באמצעות הקובץ car_audio_configuration.xml
. למידע נוסף, ראה תצורת מדיניות אודיו .