2009-03-23 14 views
6

私は、オーディオストリーマーを開発中で、中断が発生したときに着信コールやSMSなどの曲の状態を保存するために中断リスナーを宣言しました。ここでオーディオキューで中断を処理する

は私AppDelegateに関連するコード

で、私はこの

AudioSessionInitialize (NULL, NULL, interruptionListenerCallback, self); 
AudioSessionSetActive(YES); 

を持っているこれは、私が取得すると、割り込みリスナーが

void interruptionListenerCallback (void *inUserData, UInt32 interruptionState) { 
// This callback, being outside the implementation block, needs a reference 
//to the AudioPlayer object 
MyPlayer *player = (MyPlayer *)inUserData; 

if (interruptionState == kAudioSessionBeginInterruption) { 
    if ([player audioStreamer]) { 
     // if currently playing, pause 
     [player pausePlayback]; 
     player.interruptedOnPlayback = YES; 
    } 

} else if ((interruptionState == kAudioSessionEndInterruption) && player.interruptedOnPlayback) { 
    // if the interruption was removed, and the app had been playing, resume playback 
    [player resumePlayback]; 
    player.interruptedOnPlayback = NO; 
} 

}

次のようになります割り込みリスナが呼び出された電話、ユーザがコールを拒否した場合再生再開メソッドも呼び出されます。 resumePlaybackメソッドが呼び出される前に、しかし、私は誰がオーディオファイルをストリーミングする際に正しくオーディオ割り込みを処理する方法のアイデアを持っていますAudioQueueEnqueueBuffer

error: tca! error int: 560030580

のコンソールにこのエラーが発生します。

ありがとうございました。

答えて

0

あなたappDelegateの代わりに、あなたのプレーヤーとしてinUserDataを設定しているように私には見えます。

2

!行為はコメント

とAudioServices.hで宣言さkAudioSessionNotActiveErrorは、「AudioSessionがアクティブでないため、操作は失敗しました。最初に、ほとんどの場合、このエラーを修正しますAudioSessionSetActive(true)を呼び出す。」されます

中断後にAudioQueueStart()を呼び出すと、このエラーが発生します(これは私が今日見つけたものです)。

+0

私の場合は、再生AVPlayerを一時停止する前にセッションを停止したためです。 – Drew

関連する問題