סקירה כללית

מערכת ההפעלה Android Automotive OS‏ (AAOS) מבוססת על מחסנית האודיו הבסיסית של Android כדי לתמוך בתרחישי השימוש של הפעלה כמערכת מולטימדיה ברכב. ‫AAOS אחראי לצלילים של מערכות מידע ובידור (כלומר, מדיה, ניווט ותקשורת), אבל הוא לא אחראי ישירות לצלילים ולאזהרות שיש להם דרישות זמינות ותזמון מחמירות.

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

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

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

סאונדים ומקורות נתונים ב-Android

מערכות אודיו לרכב מטפלות בצלילים ובזרמים הבאים:

תמונה

איור 1. דיאגרמת ארכיטקטורה מבוססת-סטרימינג.

מערכת Android מנהלת את הצלילים שמגיעים מאפליקציות ל-Android, שולטת באפליקציות האלה ומנתבת את הצלילים שלהן למכשירי פלט ב-HAL על סמך סוג הצליל:

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

  • לזרמים פיזיים, שנקראים מכשירים במינוח של Core Audio, אין מידע על ההקשר אחרי המיקס.

כדי להבטיח אמינות, צלילים חיצוניים (שמגיעים ממקורות עצמאיים, כמו צלילי אזהרה של חגורת בטיחות) מנוהלים מחוץ ל-Android, מתחת ל-HAL או אפילו בחומרה נפרדת. מיישמי המערכת צריכים לספק מיקסר שמקבל שידור קלט אודיו אחד או יותר מ-Android, ואז משלב את השידורים האלה בצורה מתאימה עם מקורות האודיו החיצוניים שנדרשים ברכב. ‫Android Control HAL מספק מנגנון שונה להעברת מידע על צלילים שנוצרים מחוץ ל-Android בחזרה ל-Android:

  • בקשה להרשאת אודיו
  • הגבלות על עוצמת הקול או על עוצמת האות
  • שינויים בעוצמת הקול

הטמעת ה-HAL של האודיו והמיקסר החיצוני אחראים לוודא ששומעים את הצלילים החיצוניים שחיוניים לבטיחות, לערבב את הזרמים שסופקו על ידי Android ולנתב אותם לרמקולים מתאימים.

צלילים ב-Android

יכול להיות שבאפליקציות יש נגן אחד או יותר שפועלים באמצעות ממשקי ה-API הרגילים של Android (לדוגמה, AudioManager לשליטה במיקוד או MediaPlayer להזרמה) כדי להפיק זרם לוגי אחד או יותר של נתוני אודיו. הנתונים האלה יכולים להיות מונו בערוץ יחיד או סראונד 7.1, אבל הם מנותבים ומטופלים כמקור יחיד. הזרם של האפליקציה משויך ל-AudioAttributes שמספקים למערכת רמזים לגבי האופן שבו האודיו צריך להיות מושמע.

הזרמים הלוגיים נשלחים דרך AudioService ומופנים לאחד (ואחד בלבד) מזרמי הפלט הפיזיים הזמינים, שכל אחד מהם הוא הפלט של מיקסר בתוך AudioFlinger. אחרי שהמאפיינים של האודיו עוברים מיקסדאון לשידור פיזי, הם כבר לא זמינים.

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

מסלולי לימוד חיצוניים

אפשר לשלוח ישירות למיקסר חיצוני זרמי אודיו שלא אמורים לעבור דרך Android (מסיבות שקשורות לאישור או לתזמון). החל מ-Android 11,‏ HAL יכול לבקש מיקוד עבור הצלילים החיצוניים האלה כדי להודיע ל-Android, כך שהוא יוכל לבצע פעולות מתאימות כמו השהיית מדיה או מניעת מיקוד מאחרים.

אם מקורות חיצוניים הם מקורות מדיה שצריכים ליצור אינטראקציה עם סביבת הצליל ש-Android יוצרת (לדוגמה, להפסיק את ההפעלה של קובץ MP3 כשמפעילים מקלט חיצוני), המקורות החיצוניים האלה צריכים להיות מיוצגים על ידי אפליקציית Android. אפליקציה כזו תבקש מיקוד אודיו בשם מקור המדיה במקום בשם HAL, ותגיב להתראות על מיקוד על ידי הפעלה והפסקה של המקור החיצוני לפי הצורך, כדי להתאים למדיניות המיקוד של Android.

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

מכשירי פלט

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

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

ההקצאה של הקשרים של אודיו למכשירי פלט מתבצעת באמצעות הקובץ car_audio_configuration.xml. מידע נוסף זמין במאמר בנושא הגדרת מדיניות בנושא אודיו.