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

מערכת ההפעלה Android Automotive‏ (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 מוגדר בקובץ ההגדרות של שירות הרכב כדי להפעיל את IAudioControl#onDevicesToDuckChange API ולעדכן את HAL מתי להנמיך את עוצמת הקול. כשמזינים true (ערך ברירת המחדל), ה-API מקבל אותות שמציינים אילו מכשירי פלט צריך להנמיך ואילו שימושים מחזיקים את המיקוד. כש-false, לא מתבצעת קריאה ל-API. ה-API לא מופעל אלא אם Audio Control HAL מיישם ducking.
config_oemCarService השם הזה מוגדר בקובץ ההגדרות של שירות הרכב, והוא שם הרכיב של שירות ההתאמה האישית של יצרן הציוד המקורי. יצרני ציוד מקורי יכולים להטמיע את השירות הזה כדי להתאים אישית פעולות של שירותים לרכב בהתאם לכללי מדיניות שונים. אם יצרני ציוד מקורי בוחרים להטמיע את הרכיב הזה, הם צריכים להטמיע שירות כדי להרחיב את OemCarService שנחשף על ידי car-lib, ואז להטמיע את שירותי הרכיבים הנדרשים. במקרה של שירות אודיו לרכב, יצרני ציוד מקורי (OEM) יכולים להטמיע כל אחד משירותי המשנה של האודיו כדי לנהל פעולות אודיו. פרטים נוספים זמינים במאמר בנושא Car Audio Plugin Service. אם שם הרכיב לא תקין, 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 לתמיכה בהחזרות (callbacks) של עוצמת קול מדור קודם הוצאו משימוש ויוסרו בקרוב לחלוטין.

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