iPod touchのInterruption Callback

Pocket

iPhoneでアラームとか通話とかが割り込んできてアプリのオーディオが停止してしまうときの通知を受け取るにはAudioSessionでInterruption Callbackを登録するって感じなのですが、サンプルソースなどは以下のようなコードになってまして…

void rioInterruptionListener(void *inUserData, UInt32 inInterruption)
{
    AudioUnit *remoteIO = (AudioUnit*)inUserData;

    if (inInterruption == kAudioSessionEndInterruption) {
        AudioSessionSetActive(true);
        AudioOutputUnitStart(*remoteIO);
    }

    if (inInterruption == kAudioSessionBeginInterruption)
        AudioOutputUnitStop(*remoteIO);		
}

自分のアプリに戻ってきたときにはこのコールバックが呼ばれて、kAudioSessionEndInterruptionがinInterruptionに来る事になっていますが、1つ例外があるようです。

iPod touchでホームボタンをダブルタップすると、ミュージックをコントロールできる小さいウィンドウが現れます。そこで再生を押すとオーディオの割り込み開始のkAudioSessionBeginInterruptionは来ますが、そのあと停止してウィンドウを閉じてもkAudioSessionEndInterruptionは来ません。

とりあえず、戻ってくるところはUIApplicationのapplicationDidBecomeActive:で処理しないといけなさそうです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です