2011-01-28 1 views
2

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

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

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

ответ

3

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

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

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

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

AudioSessionSetActiveWithFlags (ложный, kAudioSessionSetActiveFlag_NotifyOthersOnDeactivation);

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

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