נגני אודיו תומכים במאפיינים שמגדירים את האופן שבו מערכת האודיו מטפלת בהחלטות לגבי ניתוב, עוצמת קול ומיקוד של המקור שצוין. אפליקציות יכולות לצרף מאפיינים להפעלת אודיו (למשל, מוזיקה שמנגנת שירות סטרימינג או התראה על אימייל חדש), ולאחר מכן להעביר את מאפייני מקור האודיו למסגרת, שבה מערכת האודיו משתמשת במאפיינים האלה כדי לקבל החלטות לגבי ערבוב ולהודיע לאפליקציות על מצב המערכת.
ב-Android מגרסה 4.4 ומטה, המערכת קיבלה החלטות לגבי המיקס רק על סמך סוג מקור האודיו. עם זאת, ההחלטות האלה מבוססות על סוג הסטרימינג, והן מגבילות מדי את היכולת ליצור פלט איכותי בכמה אפליקציות ומכשירים. לדוגמה, במכשיר נייד, אפליקציות מסוימות (למשל, מפות Google) מקריאות מסלול נסיעה בסוג הסטרימינג STREAM_MUSIC. עם זאת, במכשירים ניידים במצב הקרנה (למשל, Android Auto), אפליקציות לא יכולות לשלב מסלול נסיעה עם סטרימינג של מדיה אחרת.
באמצעות Audio Attribute API, אפליקציות מספקות למערכת האודיו מידע מפורט על מקור אודיו ספציפי, כולל שימוש (למה המקור מופעל), סוג תוכן (מה המקור מפעיל), דגלים (איך צריך להפעיל את המקור) והקשרים (חדש ב-Android 9). תחביר:
AudioAttributes { mUsage mContentType mSource mFlags mTags / mFormattedTags / mBundle (key value pairs) }
- שימוש. מציין למה המקור מופעל, ומאפשר לקבוע את ההחלטות לגבי ניתוב, מיקוד ועוצמת קול.
- סוג התוכן. מציין מה מופעל במקור (מוזיקה, סרט, דיבור, צלילים, לא ידוע).
- הקשר. ערכי שימוש שעבר תהליך הפשטה ל-HAL של האודיו.
- דגלים. מציין איך המקור צריך לפעול. כולל תמיכה באכיפת ניראות (צליל הצמצם של המצלמה נדרש במדינות מסוימות) ותזמון אודיו/ווידאו בחומרה.
כדי לבצע עיבוד דינמי, האפליקציות צריכות להבדיל בין תוכן של סרטים, מוזיקה ודיבור. יכול להיות שגם מידע על הנתונים עצמם ישפיע על התוצאות, כמו עוצמת הקול וערך הדגימה המקסימלי.
שימוש במאפיינים
השדה 'שימוש' מציין את ההקשר שבו נעשה שימוש בסטרימינג, ומספק מידע על הסיבה להפעלת הצליל ועל המטרה שלשמה הוא משמש. מידע על שימוש מפורט יותר מסוג של שידור, ומאפשר לפלטפורמות או למדיניות הניתוב לשפר את ההחלטות לגבי נפח או ניתוב.
לכל מכונה, מציינים אחד מערכי השימוש הבאים:
- USAGE_UNKNOWN
- USAGE_MEDIA
- USAGE_VOICE_COMMUNICATION
- USAGE_VOICE_COMMUNICATION_SIGNALLING
- USAGE_ALARM
- USAGE_NOTIFICATION
- USAGE_NOTIFICATION_TELEPHONY_RINGTONE
- USAGE_NOTIFICATION_COMMUNICATION_REQUEST
- USAGE_NOTIFICATION_COMMUNICATION_INSTANT
- USAGE_NOTIFICATION_COMMUNICATION_DELAYED
- USAGE_NOTIFICATION_EVENT
- USAGE_ASSISTANCE_ACCESSIBILITY
- USAGE_ASSISTANCE_NAVIGATION_GUIDANCE
- USAGE_ASSISTANCE_SONIFICATION
- USAGE_GAME
- USAGE_VIRTUAL_SOURCE
- USAGE_ASSISTANT
ערכי השימוש של מאפייני האודיו הם ייחודיים. לדוגמה, אפשר לעיין בהגדרות של USAGE_MEDIA
ו-USAGE_ALARM
. לקבלת מידע על החרגות, אפשר לעיין בהגדרה של AudioAttributes.Builder
.
סוג תוכן
סוג התוכן מגדיר את סוג הצליל ומציין את הקטגוריה הכללית של התוכן, למשל סרט, דיבור או צפצוף/צלצול. מסגרת האודיו משתמשת במידע על סוג התוכן כדי להגדיר באופן סלקטיבי בלוקים של עיבוד אודיו לאחר העיבוד. הצגת סוג התוכן היא אופציונלית, אבל מומלץ לכלול את פרטי הסוג בכל מקרה שבו ידוע סוג התוכן. למשל, אפשר להשתמש ב-CONTENT_TYPE_MOVIE
עבור שירות סטרימינג של סרטים או ב-CONTENT_TYPE_MUSIC
עבור אפליקציית הפעלת מוזיקה.
לכל מופע, צריך לספק אחד מהערכים הבאים של סוג התוכן:
-
CONTENT_TYPE_UNKNOWN
(ברירת מחדל) CONTENT_TYPE_MOVIE
CONTENT_TYPE_MUSIC
CONTENT_TYPE_SONIFICATION
CONTENT_TYPE_SPEECH
הערכים של סוג התוכן של מאפיין האודיו הם ייחודיים. פרטים על סוגי התוכן מופיעים במאמר API של מאפייני אודיו.
הקשרים
כל צליל ב-Android מזוהה לפי האפליקציה האחראית והסיבה ליצירת הצליל. מכשיר Android משתמש במידע הזה כדי לקבוע איך להציג את הצליל. ב-Android מגרסה 8.x ומטה, אפליקציות יכולות לדווח על הסיבה ליצירת הצליל באמצעות סוגי סטרימינג מדור קודם (למשל AudioSystem.STREAM_MUSIC
) או AudioAttributes
. ב-Android 9, ערכי AudioAttributes.usage
מופשטים ברמת ה-HAL כהקשרים.
הקשרים של אודיו ב-HAL | שימוש ב-AudioAttributes |
---|---|
מוזיקה | מדיה |
VOICE_COMMAND | USAGE_ASSISTANT |
ניווט | ASSISTANCE_NAVIGATION_GUIDANCE |
התקשר | VOICE_COMMUNICATION |
RINGTONE | NOTIFICATION_RINGTONE |
התראה | התראה |
ALARM | ALARM |
SYSTEM_SOUND | ASSISTANCE_SONIFICATION |
לא ידוע | לא ידוע |
אפשר לספק לאובייקט כלשהו אחד מהערכים הבאים של CONTEXT_NUMBER
:
- MUSIC_CONTEXT // הפעלת מוזיקה
- NAVIGATION_CONTEXT // Navigation directions
- VOICE_COMMAND_CONTEXT // סשן של פקודה קולית
- CALL_RING_CONTEXT // צלצול בשיחה קולית
- CALL_CONTEXT // שיחת טלפון
- ALARM_CONTEXT // צליל שעון מעורר מ-Android
- NOTIFICATION_CONTEXT // התראות
- SYSTEM_SOUND_CONTEXT // צלילים של אינטראקציה של משתמשים (לחיצות על לחצנים וכו')
דגלים
הדגלים מציינים איך מסגרת האודיו מחילה אפקטים על הפעלת האודיו. מציינים אחד או יותר מהדגלים הבאים למכונה:
FLAG_AUDIBILITY_ENFORCED
. המערכת מבקשת לוודא שהצליל נשמע. משתמשים בה כדי לענות על הצרכים שלSTREAM_SYSTEM_ENFORCED
מדור קודם (למשל, איך לאלץ את הצליל של הצמצם במצלמה).HW_AV_SYNC
. המערכת מבקשת לבחור שידור פלט שתומך בסנכרון A/V בחומרה.
הדגלים של מאפייני האודיו הם לא בלעדיים וניתן לשלב ביניהם. פרטים על הדגלים האלה מופיעים במאמר API של מאפיין האודיו.
דוגמה
בדוגמה הזו, AudioAttributes.Builder
מגדיר את AudioAttributes
לשימוש במכונה חדשה של AudioTrack
:
AudioTrack myTrack = new AudioTrack( new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_MEDIA) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) .build(), myFormat, myBuffSize, AudioTrack.MODE_STREAM, mySession);
תאימות
מפתחי אפליקציות צריכים להשתמש במאפייני אודיו כשיוצרים או מעדכנים אפליקציות ל-Android מגרסה 5.0 ואילך. עם זאת, אפליקציות לא חייבות להשתמש במאפיינים. הן יכולות לטפל רק בסוגים קודמים של סטרימינג או לא לדעת על המאפיינים (כלומר, נגן מדיה כללי שלא יודע דבר על התוכן שהוא מפעיל).
במקרים כאלה, המסגרת שומרת על תאימות לאחור למכשירים ישנים ולגרסאות ישנות של Android על ידי תרגום אוטומטי של סוגי זרמי אודיו מדור קודם למאפייני אודיו. עם זאת, המסגרת לא אוכפת את המיפוי הזה או מבטיחה אותו במכשירים, בייצרנים או במהדורות של Android.
מיפויים של תאימות:
Android 5.0 ואילך | Android מגרסה 4.4 וגרסאות קודמות |
---|---|
CONTENT_TYPE_SPEECH USAGE_VOICE_COMMUNICATION
|
STREAM_VOICE_CALL
|
CONTENT_TYPE_SONIFICATION USAGE_ASSISTANCE_SONIFICATION
|
STREAM_SYSTEM
|
CONTENT_TYPE_SONIFICATION USAGE_NOTIFICATION_RINGTONE
|
STREAM_RING
|
CONTENT_TYPE_MUSIC USAGE_UNKNOWN USAGE_MEDIA USAGE_GAME USAGE_ASSISTANCE_ACCESSIBILITY USAGE_ASSISTANCE_NAVIGATION_GUIDANCE
|
STREAM_MUSIC
|
CONTENT_TYPE_SONIFICATION USAGE_ALARM
|
STREAM_ALARM
|
CONTENT_TYPE_SONIFICATION USAGE_NOTIFICATION USAGE_NOTIFICATION_COMMUNICATION_REQUEST USAGE_NOTIFICATION_COMMUNICATION_INSTANT USAGE_NOTIFICATION_COMMUNICATION_DELAYED USAGE_NOTIFICATION_EVENT
|
STREAM_NOTIFICATION
|
CONTENT_TYPE_SPEECH
|
(@hide) STREAM_BLUETOOTH_SCO
|
FLAG_AUDIBILITY_ENFORCED
|
(@hide) STREAM_SYSTEM_ENFORCED
|
CONTENT_TYPE_SONIFICATION USAGE_VOICE_COMMUNICATION_SIGNALLING
|
(@hide) STREAM_DTMF
|
סוגי מקור נתונים שהוצאו משימוש
ב-Android 9 הוצאו משימוש סוגי הסטרימינג הבאים לשימוש ברכב:
- STREAM_DEFAULT
- STREAM_VOICE_CALL
- STREAM_SYSTEM
- STREAM_RING
- STREAM_MUSIC
- STREAM_ALARM
- STREAM_NOTIFICATION
- STREAM_BLUETOOTH_SCO
- STREAM_SYSTEM_ENFORCED
- STREAM_DTMF
- STREAM_TTS
- STREAM_ACCESSIBILITY
מידע נוסף זמין במאמר Automotive Audio.