AudioFocus — как правильно издать звук
Мы этого практически не замечаем, но в телефоне достаточно много типов свистоперделок — музыка, уведомления, звонки, будильник, короткие звуки в приложениях (редко, но иногда анимации в приложениях озвучивают), фоновая музыка в играх и звуки, связанные с событиями в игре
Весь этот музыкальный мусор может воспроизводиться параллельно, последовательно или асинхронно
Тут введем понятие "фокус" (AudioFocus) — право приложения перетащить большую часть аудио-внимания на себя
Допустим, вы проигрываете музыку. Тут другое приложение заявляет, что хочет сместить фокус на себя. Вы можете выбрать один из путей:
• замолчать - выключите свою музыку, пускай заиграет другое приложение
например, пользователь открыл видео на ютубу - мы ему больше не нужны
• приглушиться - ваша музыка продолжит играть, но тише.
например, пришло уведомление - нашу музыку приглушаем на секунду, чтобы пользователь услышал "дзынь" от пуша
• забить - пускай пользователь слушает оба потока одновременно, его проблемы
• замолчать, но автоматически вернуться
например, пользователь начал слушать голосовое в вк - выключаем нашу музыку, а как голосовое закончится - включаемся заново
все эти махинации разруливаются через AudioManager.OnAudioFocusChangeListener, в который система будет кидать флаг состояние фокуса
....
это единственная область в андроиде, где приложения могут поднасрать друг другу. ведите себя культурно)
Post #35
1.67K