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