ניתוב אודיו מרובה אזורים

שירות שמע לרכב משתמש במדיניות השמע הדינמית Core Audio כדי להקל על מקרי שימוש במכוניות.

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

  • תצורת אזור שמע דינמי.

  • העברת שמע של אזור ראשי לנוסע.

  • מראת שמע של הנוסע.

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

אודיו מרובה אזורים

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

ארכיטקטורת אודיו מרובת אזורים

ארכיטקטורת שירותי שמע לרכב

איור 1. ארכיטקטורת שירות שמע לרכב.

אזורי אודיו לרכב הם הפשטה של ​​יציאות אודיו, מיקוד אודיו והגדרות אודיו אחרות, כל אלה ניתנים לניהול באופן עצמאי. למטרות ניתוב, כל אזור מוגדר כקבוצה של התקני אוטובוס פלט אודיו כפי שמסודרים בתצורת מדיניות האודיו. ההתקנים שונים עבור כל הגדרת אזור שמע. באיור 1, התקני אפיק 1 עד 5 שייכים לאזור אפס, התקני אפיק 6 עד 8 שייכים לאזור 1, והתקני אפיק 9 עד 11 שייכים לאזור שני.

תצורת אודיו לרכב

בדרך כלל, התקני פלט מוקצים לאזור שמע אחד. כל אזור שמע מוגדר ב- car_audio_configuration.xml . קטע הקוד הבא מציג תצורת שמע לרכב עבור איור 1:

<carAudioConfiguration version="3">
    <zones>
        <zone name="Zone0" audioZneId="0" occupantZoneI="0">
            <zoneConfigs>
                <zoneConfig name="config0" isDefault="true">
                   <volumeGoups>
                        <group>
                            <device address="bus_1">
                                <context context="music"/>
                            </device>
                        </group>
                        <group>
                            <device address="bus_2">
                                <context context="navigation"/>
                            </device>
                        </group>
                        ...
                    </volumeGroups>
                </zoneConfig>
            </zoneConfigs>
        </zone>
        <zone name="Zone1" audioZoneId="1" occupantZoneId="1">
            <zoneConfigs>
                <zoneConfig name="config0" isDefault="true">
                    <volumeGroups>
                        <group>
                            <device address="bus_6">
                                <context context="music"/>
                            </device>
                        </group>
                        <group>
                            <device address="bus_7">
                                <context context="navigation"/>
                           </device>
                       </group>
                       ...
                    </volumeGroups>
                </zoneConfig>
            </zoneConfigs>
        </zone>
        ...
    ...
   </zones>
</carAudioConfiguration>

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

  • מזהה אזור שמע ומזהה אזור דייר.

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

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

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

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

זרימת עבודה מרובת אזורי אודיו של התחברות לנוסע

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

תמונה

איור 2.

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

  1. שירות האודיו לרכב (עבור אזור שמע ספציפי) משתמש ב- AudioPolicy#removeUserIdDeviceAffinity API כדי להסיר את הזיקות למכשיר המשתמש. API זה דורש מזהה משתמש. במקרה זה, המשתמש של האזור הקודם.

  2. ה- AudioPolicy#setUserIdDeviceAffinity API מקצה את המשתמש החדש לאזור, שמקבל את מזהה המשתמש ואת כל המכשירים עבור תצורת אזור ספציפי.

תצורות אזור דינמי

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

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

זרימת עבודה של תצורת אזור דינמי

איור 3. זרימת עבודה של תצורת אזור דינמי.

איור 3 ממחיש את הארכיטקטורה עבור זרימת העבודה של תצורת האזור הדינמי. אזור שמע 1 מכיל שתי תצורות, Config 0 ו- Config 1 , המשויכות לרמקול ומשענת הראש של התקן הפלט, בהתאמה.

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

קטע הקוד למטה מציג את ההגדרה עבור תצורת אזור דינמי זה.

<carAudioConfiguration version="3">
    <zones>
        <zone name="Zone1" audioZoneId="1" occupantZoneId="1">
            <zoneConfigs>
                <zoneConfig name="Zone 1 Config 0" isDefault="true">
                    <volumeGroups>
                        <group>
                            <device address="bus_100">
                                <context context="music"/>
                                    ***
                            </device>
                        </group>
                    </volumeGroups>
                </zoneConfig>
                <zoneConfig name="Zone 1 Config 1">
                    <volumeGroups>
                        <group>
                            <device address="bus_101">
                                <context context="music"/>
                                    ***
                            </device>
                        </group>
                    </volumeGroups>
                </zoneConfig>
            </zoneConfigs>
        </zone>
    </zones>

כדי להקל על הניהול של תצורות האודיו, מנהל האודיו לרכב חושף ממשקי API לניהול התצורות:

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

אפליקציית ממשק משתמש או שירות של מערכת יכולים להשתמש ב-API אלה כדי לנהל את התצורה של אזור השמע כפי שמוצג באיור 4. ה-Query API חושף את השניים לנוסע. המשתמש יכול לבחור תצורה אחרת על ידי הקשה על פקודה עבור התצורה הרצויה.

זרימת עבודה של תצורת אזור דינמי

איור 4. זרימת עבודה של תצורת אזור דינמי.

קאסט שמע לנוסע באזור ראשי

העברת האודיו של הנוסעים באזור הראשי היא תכונה שהוצגה באנדרואיד 14 כדי לאפשר לנוסעים להזרים את האודיו של המדיה שלהם לאזור הראשי. באופן זה ניתן להזרים את אודיו המדיה של הנוסע לתא הראשי בזמן שהנהג נשאר בשליטה מלאה.

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

זרימת עבודה של תצורת אזור דינמי

איור 5. זרימת עבודה של תצורת אזור דינמי.

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

  • התקן פלט מדיה לנוסע הוסר מרשימת המכשירים
  • התקן פלט מדיה עבור מנהל ההתקן נוסף לרשימת ההתקנים
  • התקני הפלט הנותרים עבור אזורי אודיו של נוסעים נשארים ברשימת ההתקנים

רשימה חדשה זו של מכשירים מוקצית לנוסע על ידי AudioPolicy#setUserIdDeviceAffinity API. הפרמטרים המועברים ל-API הם רשימת המכשירים ומזהה המשתמש של הנוסע. כאשר שירות מדיניות השמע של מערכת השמע שואל איזה מיקס אודיו יש לבחור עבור רצועת מדיה המשויכת לנוסע, מיקס השמע המשויך לאזור הראשי נבחר.

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

מראת שמע באזור הנוסעים

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

ניתוב מראת שמע

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

האיור שלהלן מציג דיאגרמה פשוטה של ​​שיקוף שמע רב-אזורי בין שני נוסעים. השמע משני הנוסעים מנותב להתקן מראת שמע, bus_1000 . ה- Audio HAL משכפל את האות לאזורי המקור.

זרימת עבודה של תצורת אזור דינמי

איור 6. זרימת עבודה של תצורת אזור דינמי.

ניתוב זה מופעל רק כאשר הנוסעים נמצאים במצב שיקוף. אם לא, המכשירים המתאימים לאזור השמע מוקצים לנוסעים. כאשר שיקוף מופעלת לראשונה עבור נוסע, ה- AudioPolicy#setUserIdDeviceAffinity API משנה את הניתוב:

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

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

זרימת עבודה של מראת שמע

איור 7. זרימת עבודה של מראת שמע.

באיור 7, ממשקי ה-API של מנהל האודיו ברכב לניהול שיקוף השמע נקראים משירות מערכת המדיה. באופן ספציפי, ה-API לאפשר שיקוף שמע עבור משתמש 1 ומשתמש 2, CarAudioManager#enableMirrorForAudioZones .

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

בתמונה למעלה, שירות האודיו לרכב שולח mirroring_src=bus_1000;mirroring_dest=bus_10,bus_20

איפה,

bus_1000 הוא אוטובוס המקור bus_10 bus_20 הם אוטובוסי היעד.

לא מוצג בתרשים הרצף האות שנשלח דרך ה-API של AudioManager#setParameters , שמגיע ל-HAL דרך שירות האודיו.

עם השבתת מראת השמע, האות הבא נשלח, mirroring_src=bus_1000;mirroring=off . האות הזה יכול לשמש את ה-HAL כדי להשבית שכפול אודיו כאשר שיקוף אודיו אינו זמין. כדי להגדיר התקני שיקוף אודיו, קובץ תצורת האודיו לרכב מכיל קטע בשם mirroringDevices , כפי שמוצג בקטע למטה.

בקטע זה, מוגדרים שני התקני שיקוף, bus_1000 ו- bus_2000 , כך שארבעה נוסעים יכולים להשתמש בשיקוף אודיו.

<carAudioConfiguration version="3">
   <mirroringDevices>
       <mirroringDevice address="bus_1000"/>
       <mirroringDevice address="bus_2000"/>
   </mirroringDevices>
  <zones>
    ....
  </zones>
</carAudioConfiguration>