תכונות אודיו

נגני אודיו תומכים בתכונות שמגדירות כיצד מערכת השמע מטפלת בהחלטות ניתוב, עוצמת קול ומיקוד עבור המקור שצוין. אפליקציות יכולות לצרף תכונות להשמעת אודיו (כגון מוזיקה המושמעת על ידי שירות סטרימינג או התראה על אימייל חדש) ואז להעביר את תכונות מקור האודיו למסגרת, שבה מערכת השמע משתמשת בתכונות כדי לקבל החלטות ערבוב ולהודיע ​​ליישומים לגבי מצב המערכת.

באנדרואיד 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

לפרטים נוספים, ראה אודיו לרכב .