1

在我将 AudioSession 的类别从 更改kAudioSessionCategory_MediaPlayback为 后kAudioSessionCategory_PlayAndRecord,该AudioQueueStart方法挂起大约 3 ~ 5 秒以开始录制。

该问题仅发生在运行 iOS 5 的 iOS 设备上,而不是在模拟器中或仍在运行 iOS 4 或 iOS 3 的设备上。

这是我尝试过的:

如果我不更改类别但始终使用kAudioSessionCategory_PlayAndRecord,则一切正常。AudioQueueStart约 0.01 秒后开始录制。但是因为我希望我的声音来自设备的扬声器,所以我不能kAudioSessionCategory_PlayAndRecord一直使用。

同时使用kAudioSessionOverrideAudioRoute_SpeakerandkAudioSessionCategory_PlayAndRecord是个好主意,但如果我这样做的话,我也应该处理很多kAudioSessionProperty_AudioRouteChange情况,比如用户插入或移除耳机,连接蓝牙耳机等,太复杂了。

任何建议或解决方案将不胜感激。

4

1 回答 1

3

最后,我找到了一种解决问题的方法,我认为这是 iOS 5 的错误。

我将类别设置为kAudioSessionCategory_PlayAndRecord并使用以下代码:

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

请注意,kAudioSessionProperty_OverrideCategoryDefaultToSpeakerid 仅在 iOS 3.1 或更高版本中可用。

于 2011-10-14T06:50:25.483 回答