使用iPod进行录音和播放音频

3

我正在试图在一款通用应用中录制和播放音频。 AVAudioSession 的配置如下:

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

这对于带有内置麦克风的设备运作正常。但在第三代iPod上,我遇到了随机的不良行为。有时一切都正常,有时只有当插入带有集成麦克风的耳机时才会发生。在这种情况下,在没有耳机的情况下无法在应用程序中听到任何声音。

1个回答

0
第三代iPod Touch没有内置麦克风,唯一的方法是插上带有麦克风的耳机。唯一内置麦克风的iPod Touch是第四代。
您可以检查是否可用inputRecording:
UInt32 propertySize, micConnected;
AudioSessionGetProperty(kAudioSessionProperty_AudioInputAvailable, &propertySize, &micConnected);

谢谢Dave,但这并没有解决我的问题。问题是当我将音频类别设置为kAudioSessionCategory_PlayAndRecord以允许在iPod第三代中录制时,我失去了外部扬声器的声音。我正在检测设备型号和麦克风插入/拔出,并尝试重置音频会话类别,但我无法恢复扬声器声音。有什么线索吗? - LoDani
@LoDani 在iPod Touch第三代上,当您获取kAudioSessionProperty_AudioInputAvailable时的结果是什么?您的问题似乎出现在拔下耳机时? - Dabrut
尽管耳机已连接或未连接,它返回true(micConnected!= 0)。但是,当我询问[[AVAudioSession sharedInstance] inputIsAvailable]时,我得到了正确的结果。是的,在录制后拔出耳机时,我的问题就出现了。我尝试在检测到拔出后更改AudioCategory和AudioRoute属性,但没有任何结果。 - LoDani
@LoDani如果这个链接不能帮助您,您应该在苹果公司开一个工单。也许这是个bug。https://developer.apple.com/library/IOs/ipad/#documentation/Audio/Conceptual/AudioSessionProgrammingGuide/HandlingRouteChanges/HandlingRouteChanges.html - Dabrut

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接