2015-12-18 7 views
2

Я пытаюсь комбинировать воспроизведение мультимедиа с функцией VoIP (через Twilio) для iOS 9 и 8.

В то время как аудиопоток воспроизводится в фоновом режиме, я подключаю или отключает сеанс голосовой конференции, результаты которого в скачке объема от значения X до значения Y. Этот скачок можно услышать, а также наблюдать за изменением значения [AVAudioSession sharedInstance].outputVolume.

Я бы хотел предотвратить этот переход и поддерживать уровень громкости на постоянном уровне, если пользователь не примет его вручную.

Дальнейшие исследования показали, что в то время как категория AVAudioSession установлен в AVAudioSessionCategoryPlayAndRecord, переключение между режимами
[[AVAudioSession sharedInstance] setMode:AVAudioSessionModeDefault error:&error]
и
[[AVAudioSession sharedInstance] setMode:AVAudioSessionModeVoiceChat error:&error]
вызывает приложение, чтобы работать в двух совершенно разных масштабах объема, соответственно.
i.e есть громкость для режима «По умолчанию» и полностью несвязанный том для режима «Голосовой чат».

AVAudioSession's documentation, похоже, не упоминает об объеме в отношении переключателей режима/категории, и я не могу найти что-либо релевантное для интерфейсов ...AVAudioSession режим разницы громкости

Цените любую помощь.

ответ

1

Меган из Twilio здесь.

Я не самый знакомый с SDK IOS, но вы должны быть в состоянии контролировать аудио соединения с TCDevice параметров incomingSoundEnabled, outgoingSoundEnabled и disconnectSoundEnabled как documented here.

В противном случае, я хотел бы предложить, глядя на sharedInstance свойства AVAudioSession что Twilio SDK призывает как было продемонстрировано in this post:

setCategory:error:

setActive:error:

overrideOutputAudioPort:error:

Пожалуйста, дайте мне знать, если это помогает.

+0

Меган, спасибо, но это не то, что я ищу. incomingSoundEnabled/outgoingSoundEnabled - это только свойство включения/выключения звука звонка. В моей ситуации, когда Twilio подключается, объем всей сессии изменяется и остается таким, пока Twilio не отключится. Я не думаю, что это поведение характерно для Twilio. Я могу воспроизвести эту ситуацию с двумя томами просто путем вызова setMode на AVAudioSession. Я надеялся узнать причину этого, и как я могу поддерживать постоянный объем при игре с 'setMode' – eladr

1

При настройке вашего воспроизведения и записи категории, проходят AVAudioSessionCategoryOptionDefaultToSpeaker как вариант:

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

Это отменяет плей-и-записи по умолчанию поведение переключения от динамика к гораздо тише приемника. Причиной этого было то, что play-and-record была предназначена для телефонии, где вы держите телефон в ухе года. & предположительно не хотел бы, чтобы ваш слух был поврежден громкими звуками.

+0

, это объясняет разницу в объемах, но могу ли я как-то заставить его быть постоянным? предположим, что я в PlayAndRecord от get go, и я переключаюсь с режима ModeDefault на ModeVoiceChat, в то время как на выходе всегда есть гарнитура – eladr

Смежные вопросы