Ich habe ein OpenGL 3D-Spiel mit OpenAL für die Audiowiedergabe erstellt und habe das Problem, Audio zu verlieren, wenn die Home-Taste gedrückt wird, bevor das Audiogerät initialisiert wird. Ich habe versucht, den Audio-Session-Interrupt-Handler zu erreichen, aber mein Callback wird nie aufgerufen. Egal, ob ich meine Bewerbung minimieren oder maximieren möchte. Mein "OpenALInterruptionListener" wird nie aufgerufen.Wie können Audiounterbrechungen richtig behandelt werden?
Was mache ich falsch?
AudioSessionInitialize(NULL, NULL, OpenALInterriptionListener, this);
void OpenALInterriptionListener(void * inClientData, UInt32 inInterruptionState)
{
OpenALDevice * device = (OpenALDevice *) inClientData;
if (inInterruptionState == kAudioSessionBeginInterruption)
{
alcSuspendContext(_context);
alcMakeContextCurrent(_context);
AudioSessionSetActive(false);
}
else if (inInterruptionState == kAudioSessionEndInterruption)
{
UInt32 sessionCategory = kAudioSessionCategory_AmbientSound;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
AudioSessionSetActive(true);
alcMakeContextCurrent(_context);
alcProcessContext(_context);
}
}
[http://benbritten.com/2009/02/02/restarting-openal-after-application-interruption-on-the-iphone/](http://benbritten.com/2009/02/02/] Neustart-Openal-nach-Anwendung-Unterbrechung-auf-dem-iPhone /) – james82345