קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
גרסת Android 10 כוללת שינוי משמעותי במנהל מדיניות האודיו, כדי לספק גמישות רבה יותר לתמיכה בתרחישי שימוש מורכבים ברכב:
אסטרטגיות ניתוב ספציפיות ל-OEM.
קבוצות עוצמת קול שניתנות להתאמה אישית לקבוצות של סוגי שידורים מדור קודם שמשתמשים באותם עקומות עוצמת קול.
אסטרטגיות הניתוב מוצהרות על ידי מנוע מדיניות האודיו במקום להיות מקודדות באופן קשיח.
עקומות עוצמת הקול וקבוצות שמנוהלות על ידי מנוע מדיניות האודיו.
שינוי מבנה פנימי כדי להתכונן לפיצול עתידי בין קוד משותף לקוד שניתן להגדרה, ושיפור ניהול מכשירי האודיו. לדוגמה, שימוש בכל מאפייני המכשיר ולא רק בסוג שלו בכללי המדיניות.
ב-Android 7.0 הושק פורמט קובץ הגדרות מדיניות אודיו (XML) לתיאור טופולוגיית האודיו.
בגרסאות קודמות של Android היה צריך להשתמש ב-device/<company>/<device>/audio/audio_policy.conf כדי להצהיר על מכשירי האודיו שקיימים במוצר (אפשר לראות דוגמה לקובץ הזה עבור חומרת האודיו של Galaxy Nexus ב-device/samsung/tuna/audio/audio_policy.conf). עם זאת, CONF הוא פורמט פשוט וקנייני שמוגבל מדי כדי לתאר טופולוגיות מורכבות עבור תעשיות כמו טלוויזיות ומכוניות.
ב-Android 7.0 הוצא משימוש audio_policy.conf והוספה תמיכה בהגדרת טופולוגיה של אודיו באמצעות פורמט קובץ XML שקל יותר לקריאה, שיש לו מגוון רחב של כלי עריכה וניתוח, והוא גמיש מספיק כדי לתאר טופולוגיות מורכבות של אודיו. ב-Android 7.0 נעשה שימוש בדגל USE_XML_AUDIO_POLICY_CONF build כדי לבחור את פורמט ה-XML של קובצי ההגדרות.
היתרונות של פורמט XML
בדומה לקובץ ה-CONF, קובץ ה-XML מאפשר להגדיר את המספר והסוגים של פרופילי פלט וקלט של סטרימינג, מכשירים שאפשר להשתמש בהם להפעלה וללכידה, ומאפייני אודיו. בנוסף, פורמט ה-XML כולל את השיפורים הבאים:
ב-Android 10, אפשר להפעיל בו-זמנית יותר מאפליקציית הקלטה אחת.
התחלת ההקלטה אף פעם לא נדחית בגלל מצב של פעילות בו-זמנית.
registerAudioRecordingCallback(AudioManager.AudioRecordingCallback cb)
הקריאה החוזרת מודיעה ללקוחות על שינויים בנתיב הלכידה.
במצבים הבאים, לקוח מקבל דגימות אודיו שקטות:
תרחיש שימוש שקשור לפרטיות (לדוגמה, VOICE_COMMUNICATION) פעיל.
ללקוח אין שירות שפועל בחזית או ממשק משתמש שפועל בחזית.
התפקידים המיוחדים שמוכרים במדיניות:
שירות נגישות: יכול להקליט גם אם תרחיש שימוש שקשור לפרטיות פעיל.
Assistant: נחשבת רגישה לפרטיות אם ממשק המשתמש מוצג בחלק העליון.
לפרופילי אודיו יש מבנה שדומה לתיאורי אודיו פשוטים של HDMI, שמאפשר להגדיר קבוצה שונה של שיעורי דגימה או מסכות ערוצים לכל פורמט אודיו.
יש הגדרות ברורות לכל החיבורים האפשריים בין מכשירים לבין מקורות נתונים.
בעבר, כלל מרומז אפשר לחבר את כל המכשירים שמצורפים לאותו מודול HAL, וכך מנע ממדיניות האודיו לשלוט בחיבורים שהתבקשו באמצעות ממשקי API של תיקון אודיו. בפורמט XML, תיאור הטופולוגיה מגדיר את מגבלות החיבור.
התמיכה ב-כולל מונעת חזרה על הגדרות סטנדרטיות של A2DP, USB או הגשה של ניתוב מחדש.
אפשר להתאים אישית את עקומות עוצמת הקול. בעבר, טבלאות הנפח היו מקודדות. בפורמט XML, טבלאות הנפח מתוארות ואפשר להתאים אותן אישית.
בתבנית בכתובת
frameworks/av/services/audiopolicy/config/audio_policy_configuration.xml
אפשר לראות שימוש ברבות מהתכונות האלה.
פורמט הקובץ והמיקום
קובץ ההגדרה החדש של מדיניות האודיו הוא audio_policy_configuration.xml והוא נמצא בנתיב /system/etc. בדוגמאות הבאות מוצגת הגדרת מדיניות פשוטה לגבי אודיו בפורמט קובץ XML ל-Android 12 ולגרסאות שקודמות ל-Android 12.
המבנה ברמה העליונה מכיל מודולים שמתאימים לכל מודול חומרה של HAL אודיו, כאשר לכל מודול יש רשימה של יציאות מיקס, יציאות מכשיר ונתיבים:
Mix ports (יציאות של מיקס) מתארות את פרופילי ההגדרה האפשריים לסטרימינג שאפשר לפתוח ב-HAL של האודיו להפעלה ולהקלטה.
Device ports מתארים את המכשירים שאפשר לחבר אליהם, עם הסוג שלהם (ואפשר גם לציין כתובת ומאפייני אודיו, אם רלוונטי).
האפשרות Routes מופרדת מתיאור יציאת המיקס,
כך שאפשר לתאר מסלולים ממכשיר למכשיר או מזרם למכשיר.
טבלאות עוצמה הן רשימות פשוטות של נקודות שמגדירות את העקומה שמשמשת לתרגום מאינדקס בממשק המשתמש לעוצמה בדציבלים. קובץ include נפרד מספק עקומות ברירת מחדל, אבל אפשר לשנות כל עקומה לתרחיש שימוש מסוים ולקטגוריית מכשירים מסוימת.
אפשר להשתמש בשיטת הכללות XML (XInclude) כדי לכלול מידע על הגדרות מדיניות אודיו שנמצא בקובצי XML אחרים. כל הקבצים הכלולים צריכים להיות מובנים בפורמט שמתואר למעלה, עם ההגבלות הבאות:
הקבצים יכולים להכיל רק רכיבים ברמה העליונה.
קבצים לא יכולים להכיל רכיבי XInclude.
כדי להימנע מהעתקה של מידע על הגדרות של מודול HAL של אודיו בפרויקט Android Open Source Project (AOSP) לכל קובצי ההגדרות של מדיניות האודיו (שעלולה לגרום לשגיאות), צריך להשתמש בהכללות. קובץ XML סטנדרטי להגדרת מדיניות אודיו מסופק עבור HALs של אודיו מהסוגים הבאים:
AudioPolicyManager.cpp מחולק לכמה מודולים כדי שיהיה קל לתחזק ולהגדיר אותו. הארגון של frameworks/av/services/audiopolicy כולל את המודולים הבאים.
מודול
תיאור
/managerdefault
כולל את הממשקים הגנריים והתנהגות ההטמעה שמשותפים לכל האפליקציות. בדומה ל-AudioPolicyManager.cpp, עם פונקציונליות של מנוע ומושגים נפוצים שמוסתרים.
/common
הגדרת מחלקות בסיס (לדוגמה, מבני נתונים לפרופילים של זרם אודיו של קלט/פלט, תיאורים של מכשירי אודיו, תיקוני אודיו ויציאות אודיו). ההגדרה הזו הייתה קודם בתוך AudioPolicyManager.cpp.
/engine
המדיניות הזו מטמיעה את הכללים שמגדירים באילו מכשירים ובאילו אמצעי אחסון צריך להשתמש בתרחיש שימוש מסוים. הוא מיישם ממשק סטנדרטי עם החלק הגנרי, למשל כדי לקבל את המכשיר המתאים לתרחיש שימוש נתון של הפעלה או לכידה, או כדי להגדיר מכשירים מחוברים או מצב חיצוני (כלומר, מצב שיחה של שימוש מאולץ) שיכול לשנות את החלטת הניתוב.
הטמעה של מנוע מדיניות שמסתמכת על Parameter Framework (מסגרת פרמטרים) (ראו בהמשך).
ההגדרה מבוססת על Parameter Framework, והמדיניות מוגדרת על ידי קובצי XML.
/enginedefault
הטמעה של מנוע מדיניות שמבוססת על הטמעות קודמות של Android Audio Policy Manager. זוהי הגדרת ברירת המחדל, והיא כוללת כללים שמוטמעים בקוד ומתאימים להטמעות של Nexus ו-AOSP.
/service
כולל ממשקי binder, שרשור ויישום נעילה עם הממשק לשאר המסגרת.
הגדרה באמצעות Parameter Framework
קוד מדיניות האודיו מאורגן בצורה שקל להבין ולתחזק אותו, והוא תומך גם במדיניות אודיו שמוגדרת כולה על ידי קובצי הגדרה. העיצוב של המדיניות הארגונית ומדיניות האודיו מבוסס על Parameter Framework של Intel, מסגרת מבוססת-כללים ותוספים לטיפול בפרמטרים.
שימוש במדיניות אודיו שניתנת להגדרה מאפשר לספקי OEM:
מתארים את המבנה של מערכת ואת הפרמטרים שלה ב-XML.
לכתוב (ב-C++) או להשתמש מחדש בקצה עורפי (פלאגין) כדי לגשת לפרמטרים המתוארים.
הגדרת תנאים או כללים (ב-XML או בשפה ספציפית לתחום) שלפיהם פרמטר מסוים צריך לקבל ערך מסוים.
AOSP כולל דוגמה לקובץ הגדרות מדיניות אודיו שמשתמש ב-Parameter Framework בכתובת Frameworks/av/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/PolicyConfigurableDomains.xml. פרטים נוספים מופיעים במסמכי התיעוד של Intel בנושא Parameter Framework.
ב-Android מגרסה 10 ומטה, מדיניות האודיו שניתנת להגדרה נבחרת באמצעות אפשרות ה-build USE_CONFIGURABLE_AUDIO_POLICY.
ב-Android 11 ומעלה, הגרסה של מנוע מדיניות האודיו נבחרת בקובץ audio_policy_configuration.xml.
כדי לבחור את מנוע מדיניות האודיו שניתן להגדרה, מגדירים את הערך של המאפיין engine_library
של רכיב globalConfiguration ל-configurable
כמו בדוגמה הבאה:
ב-Android 6.0 הוצג API ציבורי של ספירה ובחירה, שמוצב מעל התשתית של תיקון אודיו או יציאת אודיו, ומאפשר למפתחי אפליקציות לציין העדפה לפלט או לקלט של מכשיר ספציפי עבור רשומות או טראקים של אודיו מחובר.
ב-Android 7.0, ה-API של Enumeration and Selection מאומת על ידי בדיקות CTS, והוא מורחב כך שיכלול ניתוב של זרמי אודיו מקוריים של C/C++ (OpenSL ES).
הניתוב של סטרימינג מקורי ממשיך להתבצע ב-Java, עם הוספה של ממשק AudioRouting שמחליף את שיטות הניתוב המפורשות שהיו ספציפיות למחלקות AudioTrack ו-AudioRecord, משלב אותן ומוציא אותן משימוש.
פרטים על Enumeration and Selection API זמינים במאמרים ממשקי הגדרה של Android ו-OpenSLES_AndroidConfiguration.h.
לפרטים על ניתוב אודיו, אפשר לעיין במאמר בנושא AudioRouting.
תמיכה במגוון ערוצים
אם החומרה והדרייבר תומכים באודיו רב-ערוצי דרך HDMI, אפשר להוציא את זרם האודיו ישירות לחומרת האודיו (הפעולה הזו מדלגת על המיקסר AudioFlinger, כך שלא מתבצעת המרה של האודיו לשני ערוצים). ה-HAL של האודיו
צריך לחשוף אם פרופיל של זרם פלט תומך ביכולות של אודיו רב-ערוצי. אם HAL חושף את היכולות שלו, מנהל המדיניות שמוגדר כברירת מחדל מאפשר הפעלה של כמה ערוצים דרך HDMI. פרטים על ההטמעה זמינים במאמר device/samsung/tuna/audio/audio_hw.c.
כדי לציין שהמוצר שלכם מכיל פלט אודיו רב-ערוצי, עורכים את קובץ ההגדרות של מדיניות האודיו כדי לתאר את הפלט הרב-ערוצי של המוצר. בדוגמה הבאה מתוך frameworks/av/services/audiopolicy/config/primary_audio_policy_configuration_tv.xml מוצגת מסכת ערוצים דינמית, כלומר מנהל מדיניות האודיו שולח שאילתה למסכות הערוצים שנתמכות על ידי יעד ה-HDMI אחרי החיבור.
אפשר גם לציין מסכת ערוץ סטטית, כמו
AUDIO_CHANNEL_OUT_5POINT1. המיקסר של AudioFlinger מבצע מיקס דאון של התוכן לסטריאו באופן אוטומטי כשהוא נשלח למכשיר אודיו שלא תומך באודיו רב-ערוצי.
קודקים של מדיה
חשוב לוודא שרכיבי ה-codec של האודיו שהחומרה והדרייברים תומכים בהם מוצהרים בצורה נכונה לגבי המוצר. פרטים נוספים זמינים במאמר בנושא חשיפת קודקים ל-Framework.
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-10-10 (שעון UTC).
[[["התוכן קל להבנה","easyToUnderstand","thumb-up"],["התוכן עזר לי לפתור בעיה","solvedMyProblem","thumb-up"],["סיבה אחרת","otherUp","thumb-up"]],[["חסרים לי מידע או פרטים","missingTheInformationINeed","thumb-down"],["התוכן מורכב מדי או עם יותר מדי שלבים","tooComplicatedTooManySteps","thumb-down"],["התוכן לא עדכני","outOfDate","thumb-down"],["בעיה בתרגום","translationIssue","thumb-down"],["בעיה בדוגמאות/בקוד","samplesCodeIssue","thumb-down"],["סיבה אחרת","otherDown","thumb-down"]],["עדכון אחרון: 2025-10-10 (שעון UTC)."],[],[]]