Не получить триггер AudioListenerInterruptionEnd
У меня проблема с комбинацией OpenAl и MPMoviePlayerController.
Я зарегистрировал AudioInterruptionLister в процессе установки OpenAl. Когда я запускаю видео, слушатель получает AudioListenerInterruptionStarts, но когда фильм заканчивается, я не получаю триггер AudioListenerInterruptionEnd.
// Register callback for audio interrupts
AudioSessionInitialize(NULL, NULL, &OpenALInterruptionListener, this);
Слушатель
void OpenALInterruptionListener(void *inClientData, UInt32 inInterruptionState)
{
OpenAL *oal = (OpenAL *) inClientData;
if (inInterruptionState == kAudioSessionBeginInterruption)
{
oal->MakeContextNull();
AudioSessionSetActive(false);
}
else if (inInterruptionState == kAudioSessionEndInterruption)
{
AudioSessionSetActive(true);
oal->MakeContextCurrent();
}
}
Мое решение до сих пор заключалось в том, чтобы сделать контекст недействительным до начала фильма и сделать его актуальным после окончания фильма. Это приводит к проблеме, заключающейся в том, что если пользователь очень быстро пропускает фильм, касаясь экрана, я делаю контекст текущим и немного задерживаюсь, получая триггер AudioListenerInterruptionStart, который снова устанавливает для моего контекста значение null.
На iO больше 3.1 я могу установить useApplicationAudioSession = NO, и слушатель никогда не станет триггером начала или конца. Но на iOS ниже 3.2 этот вариант не существует.
Но мой главный вопрос: почему я никогда не получаю триггер AudioListenerInterruptionEnd.
Спасибо за помощь с наилучшими пожеланиями Георг