kAudioSessionProperty_OtherMixableAudioShouldDuck несколько раз музыка не отключается

Я использую MPMusicPlayerController для воспроизведения музыки с устройства с помощью iPodMusicPlayer. И через равные промежутки времени проигрывайте оповещения с помощью AVPlayer. Код выглядит так

-(void) duckMusic
{
    UInt32 on=1;   
    AudioSessionSetProperty(kAudioSessionProperty_OtherMixableAudioShouldDuck,sizeof(on),&on);
    AudioSessionSetActive(true);
}

-(void) unDuckMusic
{
    UInt32 on=0;
    AudioSessionSetProperty(kAudioSessionProperty_OtherMixableAudioShouldDuck,sizeof(on),&on);
    AudioSessionSetActive(false);
}

Я вызываю первый метод непосредственно перед воспроизведением предупреждения, а второй метод вызываю после получения уведомления AVPlayerItemDidPlayToEndTimeNotification

Проблема, с которой я сталкиваюсь, заключается в том, что иногда музыка не исчезает после завершения оповещения. С некоторой отладкой я обнаружил, что свойство аудиосеанса установлено правильно, но по какой-то причине оно игнорируется.

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

Как с этим справиться программно?

Изменить:
Проблема возникает, когда приложение работает в фоновом режиме.


person Tejesh Alimilli    schedule 08.07.2011    source источник


Ответы (1)


Вам не нужно устанавливать свойство в unDuckMusic, деактивации сеанса должно быть достаточно, чтобы смешанный звук вернулся к нормальной громкости.

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

person Casey Robinson    schedule 12.08.2011