iphone - 在iOS 5中,更改类别后,“AudioQueueStart”用了3到5秒钟开始录制

标签 iphone ios avfoundation ios5 avaudiosession

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

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

这是我尝试过的:

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

同时使用kAudioSessionOverrideAudioRoute_SpeakerkAudioSessionCategory_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/

相关文章:

ios - 单元格洞察 UICollectionView 在可见之前不加载?

javascript - HTMLAudioElement 无法在 iPod Touch (5.0.1) 上的 Safari 中正确静音

iphone - iPhone 词典应用程序上的模型- View - Controller 实践

ios - 使用 GCD 连续显示多个 View

iphone - UIView 的一部分的 UIGestureRecognizer

ios - MissingPluginException(在 channel com.tekartik.sqflite 上未找到方法 openDatabase 的实现)

iphone - iPhone 视频中的章节

swift - 如何快速暂停和恢复 AVSpeechSynthesizer/AVSpeechUtterance?

ios - Sprite Kit - 改变场景时继续播放音频

iOS AVFoundation 的 AVCapturePhotoOutput