接收呼叫时控制Soundpool音量

时间:2017-02-02 12:12:12

标签: android audio android-audiomanager ringtone

我有一个使用Linphone进行VOIP通话的Android应用程序。

当我接到电话时,我正在启动我自己的铃声(原始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);

我想要的声音正在播放,但音量很低。呼叫本身是自动接受的,无需接收端的许可。

如果我接到电话并在声音结束前结束通话,声音将继续(这没关系)但音量会突然达到我想要的最大值。这意味着,设备可能正在进入呼叫状态,其中音箱的音量自动减小,当呼叫结束时,声音可以具有最大值。

即使在通话过程中如何将音量设定为最大音量?

1 个答案:

答案 0 :(得分:0)

由于音量自动降低,我只能在播放声音后尝试接听电话。由于SoundPool在声音播放完毕后不支持事件处理,我已经切换到使用支持它的MediaPlayer,所以我正在播放铃声,然后接受呼叫。< / p>