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

ב-Android 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 כדי להגדיר ניתוב, קבוצות של עוצמת קול, מיקוד אודיו והנמכה ניהול. הקשרי האודיו הסטטיים ב-AAOS מפורטים בהמשך.

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

הקשר אודיו AttributeUsages (שימושים משויכים)
מוזיקה UNKNOWN
GAME
MEDIA
ניווט ASSISTANCE_NAVIGATION_GUIDANCE
VOICE_Command ASSISTANT
ASSISTANCE_ACCESSIBILITY
שיחת טלפון 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)

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

<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 להחיל על הפלט של המכשירים האלה.

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

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

הגדרת אודיו של אזור התפוסה

ב-Android 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.

הגדרות האודיו לרכב ב-Android 14

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

  • הקשר אודיו של מכונית בהגדרת OEM (יצרן ציוד מקורי)
  • הגדרות דינמיות של התחום (zone) לא הראשי

הקשר של אודיו לרכב בהגדרת ה-OEM (יצרן הציוד המקורי)

כדי להפעיל הגדרת אודיו גמישה, ב-Android 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 להגדרה. בעתיד, שימושים חדשים יותר במאפייני האודיו יוקצו אל את ההקשר המתאים ביותר לצמצום שגיאות בזמן מעבר מגרסת Android אחת לגרסה אחרת.

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

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

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

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

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

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

הגדרות אישיות של אזורי אודיו דינמיים

ב-Android 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) שמעדכנים לגרסאות חדשות של Android יכולים להשתמש שוב קובץ car_audio_configuration.xml.

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