2011-10-13 28 views
1

將AudioSession的類別從kAudioSessionCategory_MediaPlayback更改爲kAudioSessionCategory_PlayAndRecord後,AudioQueueStart方法掛起約3至5秒鐘以開始錄製。在iOS 5中,類別改變後,「AudioQueueStart」使用3〜5秒鐘開始錄製

該問題只發生在,而不是在模擬器或設備仍在運行iOS 4或iOS 3.

這裏運行iOS 5的iOS設備是我曾嘗試:

如果我不」改變類別,但總是使用kAudioSessionCategory_PlayAndRecord,每件事情都很好。 AudioQueueStart在約0.01秒內開始錄製。 但是因爲我希望我的聲音來自設備的揚聲器,所以我無法一直使用kAudioSessionCategory_PlayAndRecord

使用kAudioSessionOverrideAudioRoute_SpeakerkAudioSessionCategory_PlayAndRecord同時是一個好主意,但如果我這樣做,我還要處理很多kAudioSessionProperty_AudioRouteChange情況下,如用戶插頭或卸下耳機,連接藍牙耳機等。太複雜了。

任何意見或解決方案,將不勝感激。

回答

3

最後我找到了解決這個問題的方法,我相信這是一個iOS 5的bug。

我設置類別kAudioSessionCategory_PlayAndRecord和使用下面的代碼:

UInt32 defaultToSpeaker = TRUE; 
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof(defaultToSpeaker), &defaultToSpeaker); 

注意,kAudioSessionProperty_OverrideCategoryDefaultToSpeaker ID只能在iOS 3.1或更高時可用。

+1

如果您連接了耳機,這也可以嗎? – Alan