AVAudioSession模式切换音量差异

问题描述 投票:0回答:3

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

当音频流在后台播放时,我连接或断开语音会议会话,这导致音量从值 X 到值 Y。可以听到这种跳跃,也可以通过

[AVAudioSession sharedInstance].outputVolume
值变化观察到。

我想防止这种跳跃并将音量保持在恒定水平,除非用户手动决定更改它.

进一步调查表明,虽然AVAudioSession的类别设置为AVAudioSessionCategoryPlayAndRecord,但在模式
[[AVAudioSession sharedInstance] setMode:AVAudioSessionModeDefault error:&error]


[[AVAudioSession sharedInstance] setMode:AVAudioSessionModeVoiceChat error:&error]

之间切换会导致应用程序分别在两个完全独立的音量范围内运行。
即有一个音量对于模式“默认”和模式“语音聊天”的完全不相关的音量。

AVAudioSession 的文档 似乎省略了与模式/类别开关相关的音量的任何提及,我在互联网上找不到任何相关内容。 .

感谢任何帮助。

ios iphone cocoa-touch twilio avaudiosession
3个回答
1
投票

设置播放和录制类别时,将

AVAudioSessionCategoryOptionDefaultToSpeaker
作为选项传递:

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

这会覆盖从扬声器切换到更安静的接收器的默认播放和录制行为。这样做的原因是播放和录音是为电话设计的,你会把电话放在耳边并且可能不希望你的听力被响亮的声音损坏。


1
投票

来自 Twilio 的 Megan。

我不是最熟悉 iOS SDK,但您应该能够从

TCDevice
参数
incomingSoundEnabled
outgoingSoundEnabled
disconnectSoundEnabled
控制连接音频,如 documented here

否则,我建议查看 Twilio SDK 调用的 AVAudioSession 的

sharedInstance
属性,如本文中所示

setCategory:error:

setActive:error:

overrideOutputAudioPort:error:

如果有帮助,请告诉我。


-1
投票

有解决办法吗?我也有同样的问题。 而且我发现我只能在模式为 AVAudioSessionModeDefault 时使用 MPVolumeView 来控制音量。但当模式为 AVAudioSessionModeVoiceChat 时,它仍然控制“默认音量”。

© www.soinside.com 2019 - 2024. All rights reserved.