He creado un juego OpenGL 3D utilizando OpenAL para la reproducción de audio y experimentando un problema de pérdida de audio si se presiona el botón "Inicio" antes de que se inicie el dispositivo de audio. Traté de conectarme al controlador de interrupción de sesión de audio, pero mi devolución de llamada nunca se llama. No importa si minimizo o maximizo mi aplicación. Mi "OpenALInterruptionListener" nunca se llama.¿Cómo manejar adecuadamente las interrupciones de audio?
¿Qué estoy haciendo mal?
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/ restarting-openal-after-application-interruption-on-the-iphone /) – james82345