我创建了一个使用 OpenAL 进行音频播放的 OpenGL 3D 游戏,如果在初始化音频设备之前按下“主页”按钮,则会遇到丢失音频的问题。我试图连接到音频会话中断处理程序,但我的回调永远不会被调用。无论我是最小化还是最大化我的应用程序。我的“OpenALInterruptionListener”永远不会被调用。
我究竟做错了什么?
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);
}
}