2012-05-13 191 views
3

我試圖在通用應用程序中錄製和播放音頻。 AVAudioSession配置是:使用iPod錄製和播放音頻

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error: nil]; 
UInt32 category = kAudioSessionCategory_PlayAndRecord; 
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(category), &category); 

這對於內置麥克風的設備工作正常。但在第三代iPod中,我正在經歷隨意的不良行爲。有時候所有的工作都很好,有時候只有帶有集成話筒的耳機才能插入。在這種情況下,無法在沒有耳機的情況下聽到應用程序中的任何聲音。

回答

0

第三代iPod Touch沒有內置麥克風。唯一的辦法是用麥克風插入耳機。 帶有內置麥克風的唯一一代iPod Touch是第四代。

您可以檢查是否inputRecording可用:

UInt32 propertySize, micConnected; 
AudioSessionGetProperty(kAudioSessionProperty_AudioInputAvailable, &propertySize, &micConnected); 
+0

感謝戴夫,但這並沒有解決我的問題。問題在於,當我將音頻類別設置爲kAudioSessionCategory_PlayAndRecord以允許在iPod第三代錄制時,我將丟失外部揚聲器聲音。我正在檢測設備型號和麥克風插入/拔出,並嘗試重置音頻會話類別,但我無法恢復揚聲器聲音。任何線索? – LoDani

+0

@LoDani在iPod Touch第3代上,當您獲得kAudioSessionProperty_AudioInputAvailable時,結果如何?拔下耳機時會出現問題嗎? – Dabrut

+0

即使連接了耳機,它也會返回true(micConnected!= 0)。但是我得到正確的結果,要求[[AVAudioSession sharedInstance] inputIsAvailable]。是的,在錄製後拔下耳機時會出現問題。我試圖改變AudioCategory和AudioRoute屬性後檢測到拔掉沒有結果。 – LoDani