プログラミング > Core Audio - iPhone >

iPod touchのInterruption Callback

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:で処理しないといけなさそうです。

トラックバック(0)

このブログ記事を参照しているブログ一覧: iPod touchのInterruption Callback

このブログ記事に対するトラックバックURL: http://objective-audio.jp/oa80/mt-tb.cgi/87

コメントする


画像の中に見える文字を入力してください。