iOS 6在使用播放和录制音频会话类别时音量非常低

时间:2012-11-26 16:59:18

标签: ios audio ios6 core-audio audio-recording

我有一个通过AVAudioPlayer播放音频的应用程序以及AudioUnit播放器实现。从iOS6开始,通过扬声器的播放音量(无论播放机制如何)都得到了显着降低 - 甚至在最大音量时音量几乎听不到。如果我只是将音频会话更改为kAudioSessionCategory_SoloAmbientSound或kAudioSessionCategory_MediaPlayback等其他音频会话,则音量级别将恢复为iOS6之前的级别,但当然我无法录制音频。在运行iOS5(或iOS4)的同一设备上,音量级别与不同的音频会话类别没有区别。

还有其他人遇到过这个问题吗?我一直试图弄清楚如何在我的应用程序中将音量水平恢复正常。我已经向Apple提交了一个错误,因为它似乎是一个错误,因为不同类别的音量水平差别很大,但我不希望从它们那里快速得到答案(或解决方案)。

配置音频会话:

UInt32 category = kAudioSessionCategory_PlayAndRecord;
error = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(category),  &category);
if (error) {
    // handle error
}

UInt32 speakerOverride = 1;
error = AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof(speakerOverride), &speakerOverride);
if (error) {
    // handle error
}

2 个答案:

答案 0 :(得分:0)

您是否检查/设置了当前的硬件输出量?

kAudioSessionProperty_CurrentHardwareOutputVolume

如果您使用多声道混音器音频设备,您还可以使用以下方法检查/设置音量:

kMultiChannelMixerParam_Volume

答案 1 :(得分:0)

实际上,您应该将您的speakerOverride参数指定为' spkr',如音频标题

enum
{
    kAudioSessionOverrideAudioRoute_None    = 0,
    kAudioSessionOverrideAudioRoute_Speaker = 'spkr'
};
相关问题