پخشکنندههای صوتی از ویژگیهایی پشتیبانی میکنند که نحوه عملکرد سیستم صوتی تصمیمات مسیریابی، حجم صدا و تمرکز را برای منبع مشخص شده مشخص میکنند. برنامهها میتوانند ویژگیهایی را به یک پخش صوتی متصل کنند (مانند موسیقی پخششده توسط سرویس پخش یا اعلان برای یک ایمیل جدید) سپس ویژگیهای منبع صوتی را به چارچوب منتقل کنند، جایی که سیستم صوتی از ویژگیها برای تصمیمگیری ترکیبی و اطلاعرسانی به برنامهها استفاده میکند. در مورد وضعیت سیستم
در اندروید 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 |
---|---|
موسیقی | رسانه ها |
VOICE_COMMAND | 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 // تماس صوتی
- زنگ هشدار // صدای زنگ هشدار از Android
- اعلان_کونتک // اعلان ها
- 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
برای اطلاعات بیشتر ، به Automobile Audio مراجعه کنید.