我正在尝试将媒体播放与用于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似乎省略了与模式/类别切换相关的任何音量,我找不到任何相关内容在互联网上......
感谢任何帮助。
答案 0 :(得分:1)
来自Twilio的梅根在这里。
我不熟悉iOS SDK,但您应该能够控制来自TCDevice
参数incomingSoundEnabled
,outgoingSoundEnabled
和disconnectSoundEnabled
的连接音频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];
这会覆盖从扬声器切换到更安静的接收器的默认播放和录制行为。这就是为什么播放和录音是为电话而设计的,你可以将电话拿到年耳和耳机上。大概不希望你的听力被大声的声音损坏。