? 這是今天遇到的一個問題 ?一直被忽略了 但是真正要遇到了還是蠻坑的 項目里面有錄音播放功能 錄音時候還需要播放聲音片段 ?項目中使用的AudioQueue 來讀取聲音緩沖數(shù)據(jù) 可想而知 這就涉及到對AudioSession的設置了 先上幾句代碼
+(void)setAudioSessionToNormal{//正常狀態(tài) 可以播放的并且可以聽見
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:nil];
NSError *error1 = nil;
[audioSession setActive:YES error:&error1];
}
這句代碼是通用的 ?只需要設置一次 不論錄音結束 還是剛開始錄音 表示可以在錄音狀態(tài)下調(diào)用揚聲器
那么接下來就入坑了 如果將這幾句代碼在剛剛開始錄音處設置 可能沒有問題 但如果此時你調(diào)用播放器 就可能會出現(xiàn)如上圖的錯誤打印結果 并且本次錄音啟動失敗 無錄音數(shù)據(jù)可被讀取 幾經(jīng)檢查發(fā)現(xiàn) ? 在播放器播放過程中是不能設置AudioSession的 本人的情況就是AudioSession 還沒有設置完成的情況下就 調(diào)用播放器播放 導致Session設置失敗 從而導致錄音失敗 ?再比如說到一些復雜的場景中 在多個線程中去做相關的操作 一定要避免Session 設置被干擾 ? 還有個現(xiàn)象也能驗證Session 設置失敗 就是我在Session 沒有設置完成的情況下 調(diào)用播放器 前段時間是沒有聲音的 后面才恢復 ? ?
? ?好吧 ?對于這個問題能說的就這么多 歡迎大家指正犬庇!