Не получить триггер 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.

Спасибо за помощь с наилучшими пожеланиями Георг

0 ответов

Другие вопросы по тегам