2

我有一个通过 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
}
4

2 回答 2

0

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

kAudioSessionProperty_CurrentHardwareOutputVolume

如果您使用多声道混音器音频单元,您还可以通过以下方式检查/设置音量:

kMultiChannelMixerParam_Volume
于 2012-11-26T17:17:43.757 回答
0

实际上,您应该将您的 speakerOverride 参数指定为“spkr”,就像在 audiosession 标头中一样

enum
{
    kAudioSessionOverrideAudioRoute_None    = 0,
    kAudioSessionOverrideAudioRoute_Speaker = 'spkr'
};
于 2013-10-29T07:12:50.530 回答