在iOS 5中,类别更改后,“AudioQueueStart”使用3~5秒开始录制

时间:2011-10-13 17:04:15

标签: iphone ios avfoundation ios5 avaudiosession

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

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

以下是我的尝试:

如果我不更改类别但总是使用kAudioSessionCategory_PlayAndRecord,那么每件事都可以。 AudioQueueStart在约0.01秒内开始录制。 但是因为我希望我的声音来自设备的扬声器,所以我不能一直使用kAudioSessionCategory_PlayAndRecord

同时使用kAudioSessionOverrideAudioRoute_SpeakerkAudioSessionCategory_PlayAndRecord是一个好主意,但如果我这样做,我还应该处理很多kAudioSessionProperty_AudioRouteChange情况,例如用户插入或删除耳机,连接蓝牙耳机等。太复杂了。

任何建议或解决方案都将受到赞赏。

1 个答案:

答案 0 :(得分:3)

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

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

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

请注意,kAudioSessionProperty_OverrideCategoryDefaultToSpeaker ID仅适用于iOS 3.1或更高版本。