נגני אודיו תומכים בתכונות שמגדירות כיצד מערכת השמע מטפלת בהחלטות ניתוב, עוצמת קול ומיקוד עבור המקור שצוין. יישומים יכולים לצרף תכונות להשמעת אודיו (כגון מוזיקה המושמעת על ידי שירות סטרימינג או הודעה על אימייל חדש) ואז להעביר את תכונות מקור האודיו למסגרת, שבה מערכת השמע משתמשת בתכונות כדי לקבל החלטות ערבוב ולהודיע ליישומים לגבי מצב המערכת.
באנדרואיד 4.4 ואילך, המסגרת קיבלה החלטות ערבוב באמצעות סוג זרם השמע בלבד. עם זאת, ביסוס החלטות כאלה על סוג זרם היה מגביל מכדי לייצר פלט איכותי על פני מספר יישומים והתקנים. לדוגמה, במכשיר נייד, יישומים מסוימים (כלומר מפות Google) השמיעו הנחיות נסיעה בסוג הזרם STREAM_MUSIC; עם זאת, במכשירים ניידים במצב הקרנה (כלומר Android Auto), יישומים אינם יכולים לערבב הוראות נסיעה עם זרמי מדיה אחרים.
באמצעות ה- Audio Attribute API , יישומים מספקים למערכת השמע מידע מפורט על מקור שמע ספציפי, כולל שימוש (מדוע המקור מתנגן), סוג התוכן (מה המקור מתנגן), דגלים (איך יש להפעיל את המקור), והקשרים (חדש באנדרואיד 9). תחביר:
AudioAttributes { mUsage mContentType mSource mFlags mTags / mFormattedTags / mBundle (key value pairs) }
- שימוש . מציין מדוע המקור מתנגן ושולט בהחלטות ניתוב, מיקוד ועוצמת קול.
- סוג תוכן . מציין מה המקור מנגן (מוזיקה, סרט, דיבור, סוניפיקציה, לא ידוע).
- הקשר . ערכי שימוש מופשטים ל- Audio 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 8.x ומטה, יישומים יכולים לדווח על סיבת יצירת הקול באמצעות סוגי זרם מדור קודם (למשל AudioSystem.STREAM_MUSIC
) או AudioAttributes
. ב-Android 9, ערכי AudioAttributes.usage
מופשטים ברמת HAL כ- Contexts .
הקשרי אודיו של HAL | שימוש בתכונות אודיו |
---|---|
מוּסִיקָה | כְּלֵי תִקְשׁוֹרֶת |
פקודה קולית | USAGE_ASSISTANT |
ניווט | ASSISTANCE_NAVIGATION_GUIDANCE |
שִׂיחָה | VOICE_COMMUNICATION |
רינגטון | NOTIFICATION_RINGTONE |
הוֹדָעָה | הוֹדָעָה |
אזעקה | אזעקה |
SYSTEM_SOUND | ASSISTANCE_SONIFICATION |
לא ידוע | לא ידוע |
אתה יכול לספק אחד מהערכים CONTEXT_NUMBER
הבאים עבור כל מופע:
- MUSIC_CONTEXT // השמעת מוזיקה
- NAVIGATION_CONTEXT // הוראות ניווט
- VOICE_COMMAND_CONTEXT // הפעלת פקודות קוליות
- CALL_RING_CONTEXT // שיחת קול מצלצלת
- CALL_CONTEXT // שיחה קולית
- ALARM_CONTEXT // צליל אזעקה מאנדרואיד
- 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 ואילך. עם זאת, יישומים אינם נדרשים לנצל את התכונות; הם יכולים להתמודד עם סוגי זרמים מדור קודם בלבד או להישאר לא מודעים לתכונות (כלומר נגן מדיה גנרי שאינו יודע דבר על התוכן שהוא מנגן).
במקרים כאלה, המסגרת שומרת על תאימות לאחור עם מכשירים ישנים יותר ומהדורות אנדרואיד על ידי תרגום אוטומטי של סוגי זרם אודיו מדור קודם לתכונות אודיו. עם זאת, המסגרת אינה אוכפת או מבטיחה את המיפוי הזה בין מכשירים, יצרנים או מהדורות אנדרואיד.
מיפויי תאימות:
אנדרואיד 5.0 ומעלה | אנדרואיד 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
לפרטים נוספים, ראה אודיו לרכב .