2012-05-13 168 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