Apply the ringer volume to the join/hangup sounds with 15% minimum.

This commit is contained in:
Alan Evans
2021-06-25 16:46:59 -03:00
committed by GitHub
parent 01047f0546
commit 3d2a634aac

View File

@@ -79,7 +79,8 @@ public class SignalAudioManager {
audioManager.setSpeakerphoneOn(false); audioManager.setSpeakerphoneOn(false);
} }
soundPool.play(connectedSoundId, 1.0f, 1.0f, 0, 0, 1.0f); float volume = ringVolumeWithMinimum(audioManager);
soundPool.play(connectedSoundId, volume, volume, 0, 0, 1.0f);
} }
public void stop(boolean playDisconnected) { public void stop(boolean playDisconnected) {
@@ -89,11 +90,27 @@ public class SignalAudioManager {
outgoingRinger.stop(); outgoingRinger.stop();
if (playDisconnected) { if (playDisconnected) {
soundPool.play(disconnectedSoundId, 1.0f, 1.0f, 0, 0, 1.0f); float volume = ringVolumeWithMinimum(audioManager);
soundPool.play(disconnectedSoundId, volume, volume, 0, 0, 1.0f);
} }
audioManager.setMode(AudioManager.MODE_NORMAL); audioManager.setMode(AudioManager.MODE_NORMAL);
audioManagerCompat.abandonCallAudioFocus(); audioManagerCompat.abandonCallAudioFocus();
} }
private static float ringVolumeWithMinimum(@NonNull AudioManager audioManager) {
int currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_RING);
int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_RING);
float volume = logVolume(currentVolume, maxVolume);
float minVolume = logVolume(15, 100);
return Math.max(volume, minVolume);
}
private static float logVolume(int volume, int maxVolume) {
if (maxVolume == 0 || volume > maxVolume) {
return 0.5f;
}
return (float) (1 - (Math.log(maxVolume + 1 - volume) / Math.log(maxVolume + 1)));
}
} }