2010-03-23 222 views
2

我正在開發一個使用音頻流的應用程序。對於來自互聯網的音頻流,我使用AudioStreamer類。音頻流器有 四個狀態是播放,isPaused,isWaiting,isIdle。我的問題是,當音頻流媒體處於「isWaiting」狀態,並在那個時候,如果我打電話音頻隊列失敗,給出錯誤「音頻隊列啓動失敗。」任何有解決方案?幫助....iphone音頻流

回答

1

中斷 - 如接聽電話 - 將停用音頻會話。您可以在您的中斷處理程序中通過調用AudioSessionSetActive(true)重新激活音頻會話。

查看here瞭解中斷處理程序的詳細信息。

話雖如此,我假設您使用的是mattgallagher's library。要做的事情是在AudioStreamer.m 949行(在「err = AudioQueueStart(audioQueue,NULL);」in - [AudioStreamer pause]後面放置一個斷點)

如果err == kAudioSessionNotActiveError那麼我的理論是正確的,你需要調用重新啓動音頻會話,也許這樣(但我只是隻看過這個代碼,所以也許有更好的方法來解決這個問題):

else if (state == AS_PAUSED) 
{ 
    err = AudioQueueStart(audioQueue, NULL); 
    if (err) { 
    err = AudioSessionSetActive(true); 
    if (err) { 
     [self failWithErrorCode:AS_AUDIO_QUEUE_START_FAILED]; 
     return; 
    } else { 
     err = AudioQueueStart(audioQueue, NULL); 
     if (err) { 
     [self failWithErrorCode:AS_AUDIO_QUEUE_START_FAILED]; 
     return; 
     } 
    } 
    } 
}