Как отключить фоновый звук во время записи (с помощью Audio Queue Services)

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

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

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


person l8nite    schedule 28.01.2011    source источник


Ответы (1)


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

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

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

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

AudioSessionSetActiveWithFlags (ложь, kAudioSessionSetActiveFlag_NotifyOthersOnDeactivation);

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

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

person l8nite    schedule 11.09.2011