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

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

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

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

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