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

באנדרואיד 10, car_audio_configuration.xml החליף car_volumes_groups.xml ואת IAudioControl.getBusForContext . קובצי מדיניות האודיו, הכלולים בדרך כלל במחיצת הספק, מייצגים את תצורת חומרת האודיו של הלוח. יש להגדיר את כל ההתקנים המוזכרים ב- car_audio_configuration.xml ב- audio_policy_configuration.xml .

איור 1 להלן ממחיש סקירה ברמה גבוהה של ארכיטקטורת שירות האודיו לרכב, שבה שירות האודיו לרכב קורא את קובץ תצורת האודיו לרכב כדי להגדיר אודיו עבור המכשיר.

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

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

הצב את קובץ תצורת האודיו לרכב ב- vendor\etc\ או system\etc\ במכשיר, כאשר vendor\etc\ הוא המקום הראשון שמחפש את הקובץ על ידי שירות האודיו לרכב. שירותי האודיו לרכב קוראים car_audio_configuration.xml כדי לקבוע את תצורת האודיו.

אזורי שמע לרכב:

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

    • מיקוד אודיו
    • ניתוב אודיו
    • אודיו דאקינג
  • קבוצות נפח רכב:

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

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

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

הקשרי אודיו

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

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

CarAudioContext Associated AttributeUsages
מוּסִיקָה UNKNOWN
GAME
MEDIA
ניווט ASSISTANCE_NAVIGATION_GUIDANCE
פקודה קולית ASSISTANT
ASSISTANCE_ACCESSIBILITY
CALL_RING NOTIFICATION_RINGTONE
שִׂיחָה VOICE_COMMUNICATION
VOICE_COMMUNICATION_SIGNALING
אזעקה ALARM
הוֹדָעָה NOTIFICATION
NOTIFICATION_*
SYSTEM_SOUND ASSISTANCE_SONIFICATION
חירום EMERGENCY
בְּטִיחוּת SAFETY
VEHICLE_STATUS VEHICLE_STATUS
הַכרָזָה ANNOUNCEMENT

אפשר ניתוב AAOS

כדי להשתמש בניתוב מבוסס AAOS, עליך להגדיר את דגל audioUseDynamicRouting ל- true :

<resources>
    <bool name="audioUseDynamicRouting">true</bool>
</resources>

כאשר false , הניתוב וחלק גדול מה- CarAudioService מושבתים ו-AAOS חוזר להתנהגות ברירת המחדל של AudioService .

אזור ראשוני

כברירת מחדל, כל האודיו מנותב לאזור הראשי. קיים רק אזור ראשי אחד, שמצוין בתצורה על ידי התכונה isPrimary="true" . האזור הראשי מוקצה אוטומטית Audiomanager.PRIMARY_AUDIO_ZONE .

תצורה לדוגמה (גרסה 2)

לדוגמה, לרכב עשויים להיות שני אזורים, אזור ראשי ומערכת בידור במושב האחורי. בתרחיש זה, תוכל לעצב גרסה 2 אפשרית car_audio_configuration.xml באופן הבא:

<audioZoneConfiguration version="2.0">
       <zone name="primary zone" isPrimary="true">
           <volumeGroups>
               <group>
                   <device address="bus0_media_out">
                       <context context="music"/>
                       <context context="announcement"/>
                   </device>
                   <device address="bus3_call_ring_out">
                       <context context="call_ring"/>
                   </device>
                   <device address="bus6_notification_out">
                       <context context="notification"/>
                   </device>
               </group>
               <group>
                   <device address="bus1_navigation_out">
                       <context context="navigation"/>
                   </device>
                   <device address="bus2_voice_command_out">
                       <context context="voice_command"/>
                   </device>
               </group>
               <group>
                   <device address="bus4_call_out">
                       <context context="call"/>
                   </device>
               </group>
               <group>
                   <device address="bus5_alarm_out">
                       <context context="alarm"/>
                   </device>
               </group>
               <group>
                   <device address="bus7_system_sound_out">
                       <context context="system_sound"/>
                       <context context="emergency"/>
                       <context context="safety"/>
                       <context context="vehicle_status"/>
                   </device>
               </group>
           </volumeGroups>
       </zone>
        <zone name="rear seat zone" audioZoneId="1">
           <volumeGroups>
               <group>
                   <device address="bus100_rear_seat">
                       <context context="music"/>
                       <context context="navigation"/>
                       <context context="voice_command"/>
                       <context context="call_ring"/>
                       <context context="call"/>
                       <context context="alarm"/>
                       <context context="notification"/>
                       <context context="system_sound"/>
                       <context context="emergency"/>
                       <context context="safety"/>
                       <context context="vehicle_status"/>
                       <context context="announcement"/>
                   </device>
               </group>
           </volumeGroups>
    </zones>
</audioZoneConfiguration>

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

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

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

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

באנדרואיד 11, car_audio_configuration.xml הציג שני שדות חדשים, audioZoneId ו- occupantZoneId . אתה יכול להשתמש audioZoneId כדי לשלוט בניהול אזור השמע. אתה יכול להשתמש occupantZoneId כדי להגדיר ניתוב על סמך מזהה משתמש.

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

<audioZoneConfiguration version="2.0">
       <zone name="primary zone" isPrimary="true" occupantZoneId="0">
         ...
       </zone>
       <zone name="rear seat zone" audioZoneId="1" occupantZoneId="1">
         ...
       </zone>
    </zones>
</audioZoneConfiguration>

התצורה שלמעלה מגדירה מיפוי של אזור ראשי לאזור נוסעים 0 ושל audioZoneId 1 ל- occupantZoneId 1. באופן כללי, ניתן להגדיר כל מיפוי בין אזור נוסעים לאזור שמע. עם זאת, המיפוי חייב להיות אחד לאחד. הכללים שהגדירו את שני השדות החדשים מפורטים להלן.

  • audioZoneId עבור האזור הראשי הוא תמיד מזהה PRIMARY_AUDIO_ZONE . אם מוגדר isPrimary="true" , אז אין צורך audioZoneId .

  • לא ניתן לחזור על מספרי audioZoneId ו- occupantZoneId .

  • audioZoneId ו- occupantZoneId יכולים להיות רק מיפוי אחד לאחד.

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

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

  • קונטקסט אודיו לרכב מוגדר על ידי OEM
  • תצורות דינמיות של אזור לא ראשי

הקשר של אודיו לרכב המוגדר על ידי OEM

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

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

כל ההקשרים של OEM דורשים name יחד עם רשימה של שימוש בתכונות אודיו המוקצות להקשר. בדוגמה לעיל, שני הקשרים מוגדרים:

<carAudioConfiguration version="3">
    <oemContexts>
        <oemContext name="media">
            <audioAttributes>
                <usage value="AUDIO_USAGE_MEDIA" />
    <usage value="AUDIO_USAGE_UNKNOWN"/>
            </audioAttributes>
        </oemContext>
        <oemContext name="game">
            <audioAttributes>
                <usage value="AUDIO_USAGE_GAME" />
            </audioAttributes>
        </oemContext>
...
  • הקשר media מכיל AUDIO_USAGE_MEDIA ו- AUDIO_USAGE_UNKNOWN
  • הקשר game מכיל רק AUDIO_USAGE_GAME

ההקשר חייב להיות מוגדר בחלק העליון של קובץ car_audio_configuration.xml . כאשר ההקשרים של OEM מוגדרים, שאר תצורת האודיו של המכונית יכולה להמשיך כמו קודם. הכללים הבאים חלים על הקשר האודיו לרכב:

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

  • אל תחזור על שמות של הקשרים.

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

  • יש להשתמש בכל שימושי האודיו המוגדרים ב- AudioAttributes כדי לבנות את ההקשר.

באופן קפדני, יש להשתמש בייצוג מחרוזת android.audio.policy.configuration.V7_0.AudioUsage של השימוש באודיו עבור הגדרת הקשר האודיו של OEM. בעתיד, שימושים חדשים יותר בתכונת אודיו יוקצו להקשר המתאים ביותר כדי לצמצם שגיאות בעת מעבר מגרסת אנדרואיד אחת לאחרת.

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

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

  • תכונת שמע בקרת עוצמת הקול משמשת כדי לקבוע את ההתאמה הטובה ביותר:

    • קבוצת נפח המבוססת על ההקשר המוגדר על ידי OEM.
    • עדיפות מרשימת עוצמת הקול הסטטית שהוגדרה.
  • התנהגות ברפת אודיו:

    • השימוש בתכונת אודיו עבור מיקוד האודיו הנוכחי משמש למיפוי מידע על מכשיר האודיו הפלט כפי שהוגדר בקובץ תצורת האודיו של המכונית.

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

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

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

<carAudioConfiguration version="3">
    <!-- optional OEM context -->
    <oemContexts>
      <oemContext name="media">
        <audioAttributes>
          <usage value="AUDIO_USAGE_MEDIA" />
          <usage value="AUDIO_USAGE_UNKNOWN"/>
        </audioAttributes>
      </oemContext>
      <oemContext name="game">
        <audioAttributes>
          <usage value="AUDIO_USAGE_GAME" />
        </audioAttributes>
      </oemContext>
...
    </oemContexts>
  <zones>
    <zone name="primary zone" isPrimary="true" occupantZoneId="0">
      <zoneConfigs>
        <zoneConfig name="primary zone config 0" isDefault="true">
          <volumeGroups>
            <group>
              <device address="bus0_media_out">
                <context context="media"/>
            <context context="game"/>
                <context context="announcement"/>
              </device>
              <device address="bus6_notification_out">
                <context context="notification"/>
              </device>
            </group>
  ...
      </zoneConfigs>
    </zone
  </zones>

למידע נוסף, עיין בקובץ גרסה 3 המוגדר device/generic/car/emulator/audio/car_audio_configuration.xml . החל מ-Android 14, לאזור הראשי יכולה להיות תצורה אחת (1) בלבד. לאזורים לא ראשוניים יכולים להיות מספר תצורות. הכללים הבאים חלים על תצורות שמע לרכב:

  • לאזור השמע הראשי יכול להיות רק תצורה אחת.

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

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

  • בתוך אזור שמע, תצורות השמע עשויות להיות שונות:

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

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

  • יש להקצות את כל הקשרי השמע (OEM או סטטיים) עבור כל תצורת שמע.

תאימות קדימה

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

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