הגדרת האודיו באמצעות דגל AAOS

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

סימון המטרה
audioUseDynamicRouting מוגדר בקובץ התצורה של השירות לרכב באופן הבא: מפעילים ניתוב AAOS. ההגדרה צריכה להיות true. כאשר false, וגם חלק גדול מה-CarAudioService, מושבתים ומערכת ההפעלה לחזור להתנהגות ברירת המחדל שמתוארת הגדרת מדיניות אודיו.
audioUseCarVolumeGroupMuting מוגדר בקובץ התצורה של שירות הרכב כדי לאפשר השתקה של אדם פרטי קבוצות נפח אחסון. כאשר מוגדר ל-false (ערך ברירת המחדל), השתקה של קבוצות מסוימות של נפח אחסון מושבתות. במקום זאת, ההשתקה משמשת להשתקה הראשית. כשההגדרה מוגדרת לערך true, ההשתקה של קבוצות עוצמת הקול של הרכב מופעלת ניתן להשתיק קבוצת עוצמת קול מסוימת בנפרד. כאשר true, השתקה של קבוצת עוצמת קול חייבת להיות מוטמעת ב איכות אודיו עם HAL.
audioUseHalDuckingSignals מוגדר בקובץ התצורה של השירות לרכב כדי לאפשר את API של IAudioControl#onDevicesToDuckChange לעדכון HAL מתי ברווז. כאשר true (ערך ברירת המחדל), ה-API מקבל אותות שמציינים פלט מכשירים למיון נתונים ולשימושים ששומרים על המיקוד. כאשר false, לא מתבצעת קריאה ל-API. לא מתבצעת קריאה ל-API אלא אם איכות אודיו עם HAL מבצעת 'הכסה'.
config_oemCarService מוגדר בקובץ התצורה של השירות לרכב, זהו שם הרכיב של שירות ההתאמה האישית של ה-OEM. יצרני ציוד מקורי יכולים לבחור להטמיע את השירות הזה כדי להתאים אישית את הפעולות של השירות לרכב לפי כללי מדיניות שונים. אם יצרני ציוד מקורי בוחרים להטמיע את הרכיב הזה, חייבים להטמיע שירות כדי להרחיב OemCarService נחשף על ידי מערכת המנוע של מכונית, ואז מטמיעים את שירותי הרכיבים הנדרשים. עבור שירותי אודיו ברכב באופן ספציפי, יצרני ציוד מקורי (OEM) יכול להטמיע כל אחד משירותי המשנה של האודיו כדי לנהל פעולות אודיו. עבור פרטים נוספים זמינים במאמר שירות פלאגין של אודיו לרכב. אם שם הרכיב לא תקין, CarService לא יתחבר לכל שירות של OEM. שם הרכיב לא יכול להיות חבילה של צד שלישי. הוא חייב להיות מותקן מראש.
audioVolumeAdjustmentContextsVersion

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

גרסה 1 כוללת את כל הקשרי האודיו, בסדר הזה:

  • NAVIGATION
  • CALL
  • MUSIC
  • ANNOUNCEMENT
  • VOICE_COMMAND
  • CALL_RING
  • SYSTEM_SOUND
  • SAFETY
  • ALARM
  • NOTIFICATION
  • VEHICLE_STATUSEMERGENCY

גרסה 2 מוגבלת להקשרים הבאים, לפי הסדר הזה.

גרסת ברירת המחדל היא 1.

  • CALL
  • MUSIC
  • ANNOUNCEMENT
  • VOICE_COMMAND
audioPersistMasterMuteState מוגדר בקובץ תצורה של שירות הרכב, תצורה לשמירה באופן גלובלי מצב השתקה. כאשר true (ערך ברירת המחדל) Android משחזר את מצב השתקה גלובלי בזמן האתחול. כשהערך בשדה audioUseCarVolumeGroupMuting הוא true, אין לכך השפעה על המשך השתקה של שינויים במצב השתקה השינויים מבוססים על קבוצות נפח אחסון נפרדות. ערך ברירת המחדל הוא true ויש להחליף אותן אם לא ניתן להחליף השתקה של מאסטר נמשך במכשיר מסוים.
audioVolumeKeyEventTimeoutMs

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

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

ערך ברירת המחדל הוא 3000 אלפיות השנייה, והוא צריך להיות שמותאמת על ידי יצרני ציוד מקורי (OEM) כדי להתאים אישית את חוויית המשתמש.

audioUseCarVolumeGroupEvent מוגדר בקובץ התצורה של השירות לרכב, הגדרה שמאפשרת קריאה חוזרת אירועים לקבוצות נפח אחסון. כאשר true, הלקוחות מקבלים קריאה חוזרת (callback) עד ICarVolumeGroupEvent לאירועים שמשפיעים על נפח קבוצות. כשהיא מופעלת:

  • מומלץ מאוד שהספקים יתמכו IAudioControl#setModuleChangeCallback והקבוצה IAudioControl#registerGainCallback לאירועים ושינויים ב- חומרת אודיו.
  • כשגם CarVolumeCallback וגם CarVolumeGroupEventCallback רשומים על ידי אותו אינדקס קבוצת עוצמת הקול והקריאות החוזרות להשתקה של קבוצת עוצמת הקול עד CarVolumeGroupEventCallback בלבד. לכן מומלץ מאוד שכל האפליקציות יעברו לגרסה החדשה של קריאה חוזרת (callback) כדי להבטיח ביצועים עקביים.
  • ערך ברירת המחדל הוא false. מומלץ להגדיר אל true כי ממשקי ה-API לתמיכה בנפח אחסון מדור קודם הקריאות החוזרות (callback) הוצאו משימוש ובקרוב יוסרו לגמרי.

config_useFixedVolume הוגדר ב-frameworks/base/core/res/res/values/config.xml. חובה להגדיר לערך true כדי לאפשר ניהול של שירותי האודיו ברכב בקרת עוצמת הקול. כשהדגל config_useFixedVolume לא מוגדר, או מוגדר לערך false (ערך ברירת המחדל), אפליקציות יכולות לקרוא ממשקי API של AudioManager לניהול עוצמת קול ושינוי עוצמת הקול לפי סוג הסטרימינג במיקסר התוכנה. יכול להיות שזה לא רצוי בגלל השפעה פוטנציאלית על אפליקציות אחרות והעובדה שהפחתת הנפח כשהאות מתקבל במגבר החומרה. מכשירים חדשים שלא הוגדרה ומוגדרת ל-true לקבל שינויים של עוצמת הקול דרך ממשקי ה-API של עוצמת הקול וההשתקה של AudioManager.
config_handleVolumeKeysInWindowManager מוגדר ב-frameworks/base/core/res/res/values/config.xml, חובה מוגדרת לערך true כדי לאפשר לשירות האודיו ברכב ליירט אירועים מרכזיים בנפח ההמרות. אם קובעים את עוצמת הקול ל-false (ערך ברירת המחדל) אפשר להעביר אירועים מרכזיים לאפליקציה בחזית ולהוביל לרעה תוצאות מניהול האירועים המרכזיים של עוצמת הקול מחוץ לשירות האודיו ברכב.

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

לפני Android 13, ההגדרות של שירותי הרכב הוחלפו עם שכבת-על של הגדרת מוצר (למידע נוסף: התאמה אישית של ה-build באמצעות שכבות-על של משאבים) לקובץ packages/services/Car/service/res/values/config.xml.

PRODUCT_PACKAGE_OVERLAYS := <path_to_overlay>

המיקום של קובץ התצורה מ-<path_to_overlay> למיקום בפועל המיקום צריך לכלול את packages/services/Car/service/res/values/.

RROs של שירות רכב

החל מ-Android 13, מערכת AAOS תומכת שכבות-על של משאבים בסביבת זמן ריצה משתמשים ב-RRO כדי לשנות את הערך של תצורת האודיו ברכב. לדוגמה, אפשר לעיין במסמכי ה-RRO של ההתייחסות לcuttlefish כלי רכב ב- device/google/cuttlefish/shared/auto/rro_overlay/. ההגדרה של audioUseDynamicRouting בוטלה ב device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/res/values/config.xml.

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

מפת שכבת-העל של המשאב כלולה device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/res/xml/overlays.xml:

<overlay>
...
  <item target="bool/audioUseDynamicRouting"
value="@bool/audioUseDynamicRouting" />
...
</overlay>

מניפסט שכבת-העל של המשאב שהוגדר ב- device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/AndroidManifest.xml מכיל את הערך com.android.car.updatable שהוגדר ל-targetPackage.

מידע נוסף זמין במקורות המידע הבאים:

API שמופעל בו תכונות

השיטה מחזירה true אם התכונה מופעלת במכשיר. אחרת false. ב-API CarAudioManager#isAudioFeatureEnabled, הפרמטר חייב להיות אחד מהתנאים הבאים:

  • AUDIO_FEATURE_DYNAMIC_ROUTING
  • AUDIO_FEATURE_VOLUME_GROUP_MUTING
  • AUDIO_FEATURE_OEM_AUDIO_SERVICE
  • AUDIO_FEATURE_VOLUME_GROUP_EVENTS
  • AUDIO_FEATURE_AUDIO_MIRRORING