接听电话时控制 Soundpool 音量

Control Soundpool volume when receiving a call

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

当我接到电话时,我开始播放自己的铃声(原始 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);

正在播放我想要的声音,但音量很小。调用本身是自动接受的,不需要接收端的许可。

如果我接到电话并在声音结束前结束通话,声音会继续(这没问题)但音量会突然达到我最初想要的最大。这意味着,设备可能正在进入通话状态,此时音池的音量会自动降低,通话结束时,声音可以达到最大值。

如何在通话期间将音量设置为最大?

由于音量正在自动降低,我只好在播放声音后才尝试接听电话。由于 SoundPool 不支持声音播放结束时的事件处理,我已经切换到使用支持它的 MediaPlayer,所以我正在播放铃声,然后接听电话。