2017-02-02 3 views
0

У меня есть приложение для Android, которое использует Linphone для вызовов VOIP.Управление громкостью Soundpool при получении вызова

Когда я получаю звонок, я начинаю рингтон мой собственный (сырой файл mp3), как это:

final AudioManager audioManager = (AudioManager)ctx.getSystemService(Context.AUDIO_SERVICE); 
final float maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_RING); 
audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
audioManager.setStreamVolume(AudioManager.STREAM_RING, (int)maxVolume , 0); 
soundPool.play(id, maxVolume , maxVolume , 1, 0, 1.0f); 

Звук, который я хочу, играет, но с низким объемом. Сам вызов принимается автоматически, без необходимости разрешения с принимающей стороны.

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

Как установить громкость максимум даже во время разговора?

+0

Hi Yonatan, каково ваше точное требование? Вы хотите воспроизвести звук во время разговора? И почему вы хотите воспроизводить звук во время разговора? Что вы хотите достичь, сделав это? – Chandrakanth

+0

Вызов автоматически принимается, поэтому мне нужно воспроизвести звук, чтобы пользователь знал, что идет звонок. Поэтому я могу воспроизводить звук, но не могу показаться, что он помещается на максимальный объем, пока идет вызов –

ответ

0

Поскольку громкость автоматически уменьшается, мне пришлось попробовать и принять вызов только после воспроизведения звука. Поскольку SoundPool не поддерживает обработку событий, когда звук заканчивается, я переключился на использование MediaPlayer, который поддерживает его, поэтому я воспроизвожу звуковой сигнал и затем принимаю вызов после этого.

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