یک برنامه رسانه یا بازی که از focus صوتی استفاده می کند، پس ازاین که focus را از دست دادن، نباید صدا را پخش کند. شروع با Android 12 ، چارچوب این رفتار را اعمال می کند. وقتی برنامه ای تمرکز صوتی را درخواست می کند در حالی که برنامه دیگری تمرکز دارد و در حال پخش است، این چارچوب برنامه در حال اجرا را وادار می کند که غیر ففعال شود. علاوه بر این، محو شدن یک تغییر نرم تر هنگام رفتن از یک برنامه به برنامه دیگر است.
این رفتار محو در صورت تحقق شرایط زیر اتفاق می افتد:
- برنامه اول که در حال پخش است باید:
- از USAGE_MEDIA یا AudioAttributes.USAGE_GAME استفاده کنید.
- با صوتی AUDIOFOCUS_GAIN با موفقیت درخواست فوکوس صوتی کنید.
- صدا را با نوع محتوای CONTENT_TYPE_SPEECH پخش نکنید.
- برنامه دوم درخواست فوکوس صوتی را با AUDIOFOCUS_GAIN دارد
سیستم صوتی برنامه اول را محو می کند. در پایان محو شدن ، سیستم اولین برنامه از دست دادن تمرکز را مطلع می کند. تا زمانی که برنامه دوباره تمرکز صوتی را درخواست نکند ، پخش کننده های آن بی صدا می مانند.
رفتارهای تمرکز صوتی موجود(Existing audio focus behaviors)
همچنین باید از موارد دیگر که شامل تغییر در فوکوس صوتی است نیز آگاه باشید.
Ducking اتوماتیک
Automatic ducking (به طور موقت کاهش سطح صوتی یک برنامه به طوری که برنامه دیگری به وضوح قابل شنیدن است) در Android 8 معرفی شده است.
با استفاده از چارچوب اجرای Ducking توسعه دهنده نیازی به اجرای Ducking در برنامه خود ندارید.
Ducking زدن اتوماتیک نیز زمانی اتفاق می افتد که در برنامه اعلان صوتی تمرکز برنامه را به خود جلب می کند. شروع پخش اعلان با انتهای سطح شیب دار Ducking هماهنگ می شود.
Ducking زدن اتوماتیک در صورت تحقق شرایط زیر اتفاق می افتد:
- برنامه اول که در حال پخش است باید:
- هر نوع تمرکز صوتی را با موفقیت درخواست کنید
- صدا را با نوع محتوای CONTENT_TYPE_SPEECH پخش نکنید
- Builder.setWillPauseWhenDucked(true) تنظیم نشده است
- برنامه دوم با [AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK] تمرکز صوتی را درخواست می کند (/reference/android/media/AudioManager#AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK
سیستم صوتی تمام پخش کننده های فعال برنامه اول را ducking می زند در حالی که برنامه دوم focus دارد. وقتی برنامه دوم focus را از دست می دهد، آن ها را خنثی می کند. اولین برنامه وقتی تمرکز خود را از دست می دهد مطلع نمی شود، بنابراین نیازی به انجام کاری نیست.
توجه داشته باشید که هنگام گوش دادن به محتوای گفتار، ducking خودکار انجام نمی شود، زیرا ممکن است کاربر برخی از برنامه ها را از دست بدهد. به عنوان مثال، اگر هنگام دادن راهنمایی به رانندگی، پخش شود.
تماس های تلفنی ورودی را بی صدا کنید
برخی از برنامه ها رفتار مناسبی ندارند و در هنگام تماس های تلفنی به بازی ادامه می دهند. این کاربر را مجبور می کند تا برنامه متخلف را بشنود و بی صدا کند یا از آن خارج شود تا تماسش را بشنود. این ویژگی تضمین می کند که در هنگام تماس ورودی هیچ برنامه ای به پخش ادامه نمی دهد. وقتی برنامه ای با این شرایط روبرو می شود ، فراخوانی می شود:
از AudioAttributes.USAGE_MEDIA یا AudioAttributes.USAGE_GAME استفاده می کند
با موفقیت درخواست فوکوس صوتی (هرگونه افزایش تمرکز) و پخش صدا
اگر برنامه ای در حین مکالمه به پخش ادامه دهد، پخش آن بی صدا است تا زمانی که تماس به پایان برسد. با این حال، اگر برنامه ای هنگام مکالمه شروع به پخش کند، آن پخش کننده بی صدا نمی شود زیرا فرض می شود این یک اقدام عمدی کاربر است.