OpenALを使用してオーディオを再生するOpenGL3Dゲームを作成しましたが、オーディオデバイスが初期化される前に[ホーム]ボタンを押すとオーディオが失われるという問題が発生します。オーディオセッション割り込みハンドラーに接続しようとしましたが、コールバックが呼び出されません。アプリケーションを最小化するか最大化するかに関係なく。「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);
}
}