在将AudioSession的类别从kAudioSessionCategory_MediaPlayback
更改为kAudioSessionCategory_PlayAndRecord
之后,AudioQueueStart
方法挂起约3到5秒以开始录制。
该问题仅发生在运行iOS 5的iOS设备上,而不是在Simulator中或仍在运行iOS 4或iOS 3的设备上。
这是我尝试过的:
如果我不更改类别,但始终使用kAudioSessionCategory_PlayAndRecord
,则一切正常。 AudioQueueStart
在约0.01秒内开始记录。
但是因为我希望声音来自设备的扬声器,所以我不能一直使用kAudioSessionCategory_PlayAndRecord
。
同时使用kAudioSessionOverrideAudioRoute_Speaker
和kAudioSessionCategory_PlayAndRecord
是一个好主意,但如果这样做,我也应该处理很多kAudioSessionProperty_AudioRouteChange
的情况,例如用户插入或卸下耳机,连接蓝牙耳机等。这太复杂了。
任何建议或解决方案将不胜感激。
最佳答案
最终,我找到了解决此问题的方法,我认为这是iOS 5的错误。
我将类别设置为kAudioSessionCategory_PlayAndRecord
并使用以下代码:
UInt32 defaultToSpeaker = TRUE;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof(defaultToSpeaker), &defaultToSpeaker);
请注意,
kAudioSessionProperty_OverrideCategoryDefaultToSpeaker
ID仅在iOS 3.1或更高版本中可用。
关于iphone - 在iOS 5中,更改类别后,“AudioQueueStart”用了3到5秒钟开始录制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7757739/