ב-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 |
ניווט | ASSISTANCE_NAVIGATION_GUIDANCE |
VOICE_Command | ASSISTANT |
שיחת טלפון | 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
כשהשירות לרכב מתחיל. יוצא הדופן
מכילה את המידע הרלוונטי לגבי המידע שבו נעשה שימוש
איזו גרסה מינימלית נדרשת.