mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-24 13:08:46 +00:00
Apply the ringer volume to the join/hangup sounds with 15% minimum.
This commit is contained in:
@@ -79,7 +79,8 @@ public class SignalAudioManager {
|
||||
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) {
|
||||
@@ -89,11 +90,27 @@ public class SignalAudioManager {
|
||||
outgoingRinger.stop();
|
||||
|
||||
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);
|
||||
|
||||
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)));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user