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