דגלים של 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, צריך להטמיע את ההשתקה של קבוצת עוצמת הקול ב-HAL של בקרת האודיו.
audioUseHalDuckingSignals מוגדר בקובץ התצורה של שירות הרכב כדי לאפשר ל-IAudioControl#onDevicesToDuckChange API להודיע ל-HAL מתי להתכופף. כשהערך הוא true (ערך ברירת המחדל), ה-API מקבל אותות שמציינים אילו מכשירי פלט להשתיק ואילו שימושים להתמקד בהם. כשהערך הוא false, לא מתבצעת קריאה ל-API. ה-API לא נקרא אלא אם Audio Control HAL מטמיע את ההשתקה.
config_oemCarService השם של הרכיב בשירות להתאמה אישית של יצרן ציוד מקורי, שמוגדר בקובץ התצורה של שירות הרכב. יצרני ציוד מקורי יכולים להטמיע את השירות הזה כדי להתאים אישית את הפעולות של שירותי הרכב למדיניות שונה. אם יצרני ציוד מקורי (OEM) בוחרים להטמיע את הרכיב הזה, הם צריכים להטמיע שירות להרחבת OemCarService שחשוף על ידי car-lib, ולאחר מכן להטמיע את שירותי הרכיבים הנדרשים. בשירות אודיו לרכב, יצרני ציוד מקורי יכולים להטמיע כל אחד משירותי האודיו המשניים כדי לנהל את הפעולות שקשורות לאודיו. למידע נוסף, קראו את המאמר שירות הפלאגין של Car Audio. אם שם הרכיב לא תקין, CarService לא יתחבר לשום שירות של יצרן ציוד מקורי. שם הרכיב לא יכול להיות חבילה של צד שלישי. היא חייבת להיות מותקנת מראש.
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, הלקוחות מקבלים שיחה חוזרת דרך ICarVolumeGroupEvent לגבי אירועים שמשפיעים על קבוצות נפח. כשהיא מופעלת:
  • מומלץ מאוד לספקים לתמוך גם ב-IAudioControl#setModuleChangeCallback וב-IAudioControl#registerGainCallback לאירועים ולשינויים בחומרת האודיו.
  • כשגם CarVolumeCallback וגם CarVolumeGroupEventCallback רשומים באותה אפליקציה, הקריאות החוזרות של אינדקס קבוצת עוצמת הקול וקבוצת עוצמת הקול המושתקת יעברו דרך CarVolumeGroupEventCallback בלבד. לכן, מומלץ מאוד להעביר את כל האפליקציות לממשק החדש של קריאה חוזרת כדי להבטיח ביצועים עקביים.
  • ערך ברירת המחדל הוא false. מומלץ להגדיר את הערך הזה ל-true כי ממשקי ה-API שתומכים בקריאות חזרה מקודמות של נפח הקול הוצאו משימוש ויוסר בקרוב.

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 (ערך ברירת המחדל), אירועי מפתח של עוצמת קול יכולים להישלח לאפליקציה שבחזית, וכתוצאה מכך יכולות להיות תוצאות שליליות כתוצאה מהניהול של אירועי מפתח של עוצמת קול מחוץ לשירות האודיו ברכב.
audioUseMinMaxActivationVolume מוגדר בקובץ התצורה של שירות הרכב כדי לאפשר נפח הפעלה מינימלי ומקסימלי. כשהערך הוא true, אפשר לשנות את מדד העלייה בנפח בגלל ניהול של נפח ההפעלה המינימלי והמקסימלי. כשהערך הוא false (ערך ברירת המחדל), נפח ההפעלה המינימלי והנפח המקסימלי לא נכנסים לתוקף.
audioUseFadeManagerConfiguration מוגדר בקובץ התצורה של שירות הרכב כדי לאפשר התנהגות של אובדן המיקוד באודיו שחלה על ידי המערכת. כשהערך הוא true, מסגרת האודיו ברכב מפענחת את ההגדרות של תצורת ההעלאה וההגבלה של עוצמת הקול ברכב ומחילה את 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/.

שירותי רכב: רשויות רישוי ורשות

החל מגרסה 13 של Android, מערכת 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