首页 文章

iOS6 在使用 PlayAndRecord 音频会话类别时音量非常低

提问于
浏览
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
}

2 回答

  • 0

    实际上,您应将 speakerOverride 参数指定为'spkr',如音频标头中所示

    enum
    {
        kAudioSessionOverrideAudioRoute_None    = 0,
        kAudioSessionOverrideAudioRoute_Speaker = 'spkr'
    };
    
  • 0

    你 check/set 当前的硬件输出量?

    kAudioSessionProperty_CurrentHardwareOutputVolume
    

    如果你使用多声道混音器音频单元,你也可以 check/set 音量:

    kMultiChannelMixerParam_Volume
    

相关问题