Как отключить фоновое аудио во время записи (используя Audio Queue Services) - PullRequest
2 голосов
/ 29 января 2011

У меня есть приложение, которое использует аудио-очереди для записи разговорного пользовательского ввода. Это происходит только на короткое время и только тогда, когда пользователь нажимает кнопку.

Я бы хотел, чтобы фоновая музыка пользователя продолжала воспроизводиться, за исключением того, что она приглушается или воспроизводится на гораздо более низкой громкости, когда происходит запись (чтобы избежать записи звука, воспроизводимого через динамик).

Для своей очереди записи я использую категорию PlayAndRecord, и для свойства OverrideCategoryMixWithOthers установлено значение true.

1 Ответ

3 голосов
/ 11 сентября 2011

Эта проблема стала менее серьезной в iOS4 +, когда они добавили API AudioSessionSetActiveWithFlags и флаг kAudioSessionSetActiveFlag_NotifyOthersOnDeactivation.

Чтобы приостановить фоновую музыку во время записи, вам нужно вызвать AudioSessionSetActive (false), которая деактивирует ваш аудио сеанс, затем переключить категории в режим PlayAndRecord и установить для свойства OverrideCategoryMixWithOthers значение false.

Теперь, повторно активируйте сеанс с AudioSessionSetActive (true) с этими настройками, аудио сеанс для iPod / Pandora / etc будет прерван и будет затухать и приостанавливаться.

Затем, когда ваша запись закончится, снова деактивируйте сеанс, используя

AudioSessionSetActiveWithFlags (false, kAudioSessionSetActiveFlag_NotifyOthersOnDeactivation);

Это уведомит приложения фоновой музыки о том, что их сеанс больше не прерывается, и они могут начать воспроизведение музыки.

Наконец, вы можете снова установить аудио сеанс, используя режим MediaPlayback (или эквивалентный) и снова установив для свойства OverrideCategoryMixWithOthers значение true.

...