ניתוב אודיו במספר אזורים

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

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

  • הגדרת אזור האודיו הדינמי.

  • הפעלת Cast של אודיו לאזור הראשי של הנוסע.

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

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

אודיו במספר אזורים

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

ארכיטקטורת אודיו עם מספר אזורים

הארכיטקטורה של שירותי אודיו לרכב

איור 1. ארכיטקטורה של שירותי אודיו לרכב.

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

הגדרת האודיו ברכב

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

<carAudioConfiguration version="3">
    <zones>
        <zone name="Zone0" audioZneId="0" occupantZoneId="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 מגדיר גם מתבצע מיפוי מאזור הדייר למסכים, לציוד היקפי אחר ולמשתמש ברגע המשתמש מתחבר למסך. באזור אודיו יש:

  • מזהה אזור אודיו ומזהה אזור תפוסה.

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

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

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

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

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

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

תמונה

איור 2.

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

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

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

הגדרות תחום דינמי

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

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

הגדרת תחום דינמי
תהליך עבודה

איור 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. תהליך עבודה של תצורת תחום דינמי.

הפעלת Cast של אודיו לנוסע באזור הראשי

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

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

הגדרת תחום דינמי
תהליך עבודה

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

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

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

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

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

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

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

ניתוב שיקוף האודיו

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

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

הגדרת תחום דינמי
תהליך עבודה

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

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

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

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

תהליך עבודה של שיקוף אודיו

איור 7. תהליך עבודה של שיקוף אודיו.

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

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

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

כאשר,

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

לא מוצג בתרשים הרצף הוא האות שנשלח באמצעות AudioManager#setParameters API, שמגיע ל-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>