דגלים של AAOS להגדרת אודיו

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

דגל מטרה
audioUseDynamicRouting מוגדר בקובץ ההגדרות של שירות הרכב כדי להפעיל ניתוב ב-AAOS. ההגדרה חייבת להיות true. כשהערך הוא false, הניתוב וחלק גדול מההגדרות של CarAudioService מושבתים, ומערכת ההפעלה חוזרת להתנהגות ברירת המחדל שמתוארת במאמר הגדרת מדיניות אודיו.
useCoreAudioRouting מוגדר בקובץ ההגדרות של שירות הרכב כדי להפעיל את הניהול של ניתוב האודיו בליבת AAOS. כשהערך מוגדר ל-true, שירות האודיו ברכב משתמש בהגדרות שנקבעו באמצעות מנוע מדיניות האודיו שניתן להגדרה. אם הערך מוגדר כ-false, ניהול הניתוב חוזר להשתמש בהגדרה של שילוב מדיניות האודיו הדינמית של שירות האודיו ברכב, כפי שהוגדר באמצעות audioUseDynamicRouting.
useCoreAudioVolume מוגדר בקובץ ההגדרות של שירות הרכב כדי להפעיל את ניהול עוצמת הקול של ליבת האודיו ב-AAOS. כשהערך מוגדר ל-true, שירות האודיו ברכב משתמש בהגדרות של קבוצות עוצמת הקול שהוגדרו באמצעות מנוע מדיניות האודיו שניתן להגדרה. אם הערך מוגדר כ-false, ניהול עוצמת הקול חוזר להשתמש בהגדרת ברירת המחדל של קבוצת עוצמת הקול של שירות האודיו ברכב, כפי שהוגדר באמצעות audioUseDynamicRouting.
audioUseCarVolumeGroupMuting מוגדר בקובץ התצורה של שירות הרכב כדי להשתיק קבוצות של עוצמת קול בנפרד. כשהערך מוגדר כ-false (ברירת המחדל), ההשתקה של קבוצות עוצמת קול ספציפיות מושבתת. במקום זאת, ההשתקה משביתה את ההשתקה הראשית. כשההגדרה היא true, ההשתקה של קבוצת עוצמת הקול ברכב מופעלת, ואפשר להשתיק כל קבוצת עוצמת קול בנפרד. כשמשתיקים את קבוצת עוצמת הקול true, צריך להטמיע את ההשתקה ב-Audio Control HAL.
audioUseHalDuckingSignals מוגדר בקובץ ההגדרות של שירות הרכב כדי לאפשר ל-API‏ IAudioControl#onDevicesToDuckChange להודיע ל-HAL מתי להנמיך את עוצמת הקול. כשמגדירים את הערך true (ברירת מחדל), ה-API מקבל אותות שמציינים אילו מכשירי פלט צריך להנמיך ואילו שימושים מחזיקים את המיקוד. כשמגדירים את false, לא מתבצעת קריאה ל-API. ה-API לא מופעל אלא אם Audio Control HAL מטמיע הנמכה.
config_oemCarService מוגדר בקובץ התצורה של שירות הרכב, זהו שם הרכיב של שירות ההתאמה האישית של יצרן הציוד המקורי. יצרני ציוד מקורי יכולים לבחור להטמיע את השירות הזה כדי להתאים אישית פעולות של שירותים לרכב בהתאם לכללי מדיניות שונים. אם יצרני ציוד מקורי בוחרים להטמיע את הרכיב הזה, הם צריכים להטמיע שירות כדי להרחיב את OemCarService שנחשף על ידי car-lib, ואז להטמיע את שירותי הרכיבים הנדרשים. במקרה של שירות אודיו לרכב, יצרני ציוד מקורי (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 אלפיות השנייה, ויצרני ציוד מקורי צריכים להתאים אותו כדי לשפר את חוויית המשתמש.

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

config_useFixedVolume מוגדר ב-frameworks/base/core/res/res/values/config.xml. צריך להגדיר את הערך true כדי לאפשר לשירות האודיו של הרכב לנהל את בקרת עוצמת הקול. אם הדגל config_useFixedVolume לא מוגדר או מוגדר ל-false (ערך ברירת המחדל), אפליקציות יכולות לקרוא לממשקי ה-API לניהול עוצמת הקול AudioManager ולשנות את עוצמת הקול לפי סוג הזרם במיקסר התוכנה. יכול להיות שזה לא רצוי בגלל ההשפעה הפוטנציאלית על אפליקציות אחרות, ובגלל העובדה שהנחתת עוצמת הקול במיקסר התוכנה יכולה להוביל לכך שיהיו פחות ביטים משמעותיים זמינים באות כשהוא מתקבל במגבר החומרה. מכשירים חדשים שלא הוגדרו ומוגדרים לקבל שינויים בעוצמת הקול דרך ממשקי ה-API של עוצמת הקול וההשתקה.trueAudioManager
config_handleVolumeKeysInWindowManager מוגדר ב-frameworks/base/core/res/res/values/config.xml, צריך להגדיר את הערך true כדי לאפשר לשירות האודיו ברכב ליירט אירועים של מקשי עוצמת הקול. אם הערך מוגדר ל-false (ברירת המחדל), אפשר להעביר אירועים של כפתור עוצמת קול לאפליקציה שפועלת בחזית, וזה עלול להוביל לתוצאות לא רצויות מניהול של אירועים של כפתור עוצמת קול מחוץ לשירות האודיו ברכב.
audioUseMinMaxActivationVolume מוגדר בקובץ ההגדרות של שירות המכוניות כדי להפעיל נפח הפעלה מינימלי ומקסימלי. כאשר true, אפשר לשנות את אינדקס הגברת עוצמת הקול בגלל ניהול עוצמת הקול המינימלית והמקסימלית להפעלה. כאשר false (ערך ברירת המחדל), נפח ההפעלה המינימלי והמקסימלי לא משפיע.
audioUseFadeManagerConfiguration מוגדר בקובץ ההגדרות של שירות הרכב כדי להפעיל התנהגות של אובדן מיקוד באודיו שנאכפת על ידי המערכת. כש-true, car audio framework מנתח את הגדרות ההנמכה של האודיו ברכב ומחיל את FadeManagerConfiguration המתאים כשמתבצעת שליחה של איבוד המיקוד באודיו. אם הערך הוא 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/.

הזמנות לתיקון רכב

החל מ-Android 13, מערכת AAOS תומכת בשכבות-על של משאבים בזמן ריצה. משתמשים ב-RRO כדי לשנות את הערך של הגדרת האודיו ברכב. לדוגמה, אפשר לעיין ב-RROs של 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 מכיל את targetPackage שמוגדר כ-com.android.car.updatable.

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

‫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