Не получить триггер AudioListenerInterruptionEnd - PullRequest
2 голосов
/ 24 сентября 2010

У меня проблема с комбинацией 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, который снова устанавливает мой контекст на ноль.

В iOбольше 3.1 Я могу установить useApplicationAudioSession = NO, и слушатель никогда не станет триггером начала или конца.Но на iOS ниже 3.2 эта опция не существует.

Но мой главный вопрос: почему я никогда не получаю триггер AudioListenerInterruptionEnd.

Спасибо за помощь, с наилучшими пожеланиями Georg

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...