我有一个通过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
}
答案 0 :(得分:0)
您是否检查/设置了当前的硬件输出量?
kAudioSessionProperty_CurrentHardwareOutputVolume
如果您使用多声道混音器音频设备,您还可以使用以下方法检查/设置音量:
kMultiChannelMixerParam_Volume
答案 1 :(得分:0)
实际上,您应该将您的speakerOverride参数指定为' spkr',如音频标题
enum
{
kAudioSessionOverrideAudioRoute_None = 0,
kAudioSessionOverrideAudioRoute_Speaker = 'spkr'
};