AVAudioSession模式切换音量差

时间:2015-12-18 19:56:45

标签: ios iphone cocoa-touch twilio avaudiosession

我正在尝试将媒体播放与用于iOS 9和8的VoIP功能(通过Twilio)相结合。

当音频流在后台播放时,我连接或断开连接语音会议会话导致音量从值X跳到值Y.可以听到此跳转,也可以通过[AVAudioSession sharedInstance].outputVolume值更改来观察。

我想防止这种情况发生跳转并将音量保持在一个恒定的水平,除非用户手动决定更改它。

进一步调查显示,当AVAudioSession的类别设置为 AVAudioSessionCategoryPlayAndRecord 时,在模式之间切换< br /> [[AVAudioSession sharedInstance] setMode:AVAudioSessionModeDefault error:&error]

[[AVAudioSession sharedInstance] setMode:AVAudioSessionModeVoiceChat error:&error]使应用程序分别在两个完全独立的音量标度下运行。
即有一个音量模式模式“语音聊天”的“默认”和完全不相关的音量。

AVAudioSession's documentation似乎省略了与模式/类别切换相关的任何音量,我找不到任何相关内容在互联网上......

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

来自Twilio的梅根在这里。

我不熟悉iOS SDK,但您应该能够控制来自TCDevice参数incomingSoundEnabledoutgoingSoundEnableddisconnectSoundEnabled的连接音频documented here

否则,我建议查看Twilio SDK调用的AVAudioSession的sharedInstance属性,如演示in this post

setCategory:error:

setActive:error:

overrideOutputAudioPort:error:

如果有帮助,请告诉我。

答案 1 :(得分:1)

设置播放和录制类别时,请将AVAudioSessionCategoryOptionDefaultToSpeaker作为选项传递:

[[AVAudioSession sharedInstance] AVAudioSessionCategoryPlayAndRecord withOptions: AVAudioSessionCategoryOptionDefaultToSpeaker error:&error];

这会覆盖从扬声器切换到更安静的接收器的默认播放和录制行为。这就是为什么播放和录音是为电话而设计的,你可以将电话拿到年耳和耳机上。大概不希望你的听力被大声的声音损坏。