ویژگی های صوتی

پخش‌کننده‌های صوتی از ویژگی‌هایی پشتیبانی می‌کنند که نحوه برخورد سیستم صوتی با تصمیم‌گیری‌های مسیریابی، صدا و تمرکز را برای منبع مشخص شده مشخص می‌کنند. برنامه‌ها می‌توانند ویژگی‌هایی را به پخش صدا متصل کنند (مانند موسیقی پخش‌شده توسط سرویس پخش یا اعلان برای یک ایمیل جدید) سپس ویژگی‌های منبع صوتی را به چارچوب منتقل کنند، جایی که سیستم صوتی از ویژگی‌ها برای تصمیم‌گیری ترکیبی و اطلاع‌رسانی به برنامه‌ها استفاده می‌کند. در مورد وضعیت سیستم

در اندروید 4.4 و قبل از آن، این فریم ورک تصمیمات ترکیبی را تنها با استفاده از نوع جریان صوتی اتخاذ کرد. با این حال، استناد به چنین تصمیماتی بر اساس نوع جریان برای تولید خروجی با کیفیت در چندین برنامه و دستگاه بسیار محدود کننده بود. برای مثال، در یک دستگاه تلفن همراه، برخی از برنامه‌ها (به عنوان مثال Google Maps) مسیرهای رانندگی را در نوع جریان STREAM_MUSIC پخش کردند. با این حال، در دستگاه‌های تلفن همراه در حالت نمایش (یعنی Android Auto)، برنامه‌ها نمی‌توانند مسیرهای رانندگی را با سایر جریان‌های رسانه ترکیب کنند.

با استفاده از Audio Attribute API ، برنامه‌ها اطلاعات دقیقی درباره یک منبع صوتی خاص، از جمله استفاده (چرا منبع پخش می‌شود)، نوع محتوا (منبع در حال پخش)، پرچم‌ها (نحوه پخش منبع)، به سیستم صوتی ارائه می‌کنند. و زمینه ها (جدید در اندروید 9). نحو:

AudioAttributes {
    mUsage
    mContentType
    mSource
    mFlags
    mTags / mFormattedTags / mBundle    (key value pairs)
}
  • استفاده مشخص می کند که چرا منبع پخش می شود و تصمیمات مسیریابی، فوکوس و حجم را کنترل می کند.
  • نوع محتوا . مشخص می کند که منبع در حال پخش چه چیزی است (موسیقی، فیلم، گفتار، sonification، ناشناخته).
  • زمینه مقادیر استفاده انتزاع شده به Audio HAL.
  • پرچم ها نحوه پخش سورس را مشخص می کند. شامل پشتیبانی از اجرای قابلیت شنیداری (صدای شاتر دوربین در برخی کشورها مورد نیاز است) و همگام سازی سخت افزاری صوتی/تصویری.

برای پردازش دینامیک، برنامه ها باید بین محتوای فیلم، موسیقی و گفتار تمایز قائل شوند. اطلاعات مربوط به خود داده نیز ممکن است مهم باشد، مانند بلندی صدا و حداکثر مقدار نمونه.

با استفاده از ویژگی ها

Usage زمینه استفاده از استریم را مشخص می‌کند و اطلاعاتی درباره دلیل پخش صدا و استفاده از صدا ارائه می‌دهد. اطلاعات استفاده از نوع جریانی گویاتر است و به پلتفرم‌ها یا خط‌مشی‌های مسیریابی اجازه می‌دهد حجم یا تصمیم‌های مسیریابی را اصلاح کنند.

برای هر نمونه یکی از مقادیر استفاده زیر را ارائه دهید:

  • 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 8.x و پایین‌تر، برنامه‌ها می‌توانند دلیل تولید صدا را با استفاده از انواع جریان قدیمی (مانند AudioSystem.STREAM_MUSIC ) یا AudioAttributes کنند. در Android 9، مقادیر AudioAttributes.usage در سطح HAL به عنوان Contexts انتزاع می‌شوند.

زمینه های صوتی HAL استفاده از AudioAttributes
موسیقی رسانه ها
دستور صوتی 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 و بالاتر اندروید 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 مراجعه کنید.