diff options
| author | 2020-05-12 04:44:54 +0000 | |
|---|---|---|
| committer | 2020-05-12 04:44:54 +0000 | |
| commit | ac8aec8af6c5eb79439d161c34fe5fc83b4b82f5 (patch) | |
| tree | 9f78c29ac2d24df76ca27965346e058b3d14c2c2 | |
| parent | 8683e2eeba30bcdaa9d2fcd85b494c35325f5be0 (diff) | |
| parent | db56188f4d05f0270bb871d4737aa3234b4d5236 (diff) | |
Merge "AudioService: fix volume adjustment suppression" into rvc-dev
| -rwxr-xr-x | services/core/java/com/android/server/audio/AudioService.java | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 17baead84f9d..8068e378f2e3 100755 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -7369,10 +7369,32 @@ public class AudioService extends IAudioService.Stub return false; } boolean suppress = false; - if (resolvedStream != AudioSystem.STREAM_MUSIC && mController != null) { + // Intended behavior: + // 1/ if the stream is not the default UI stream, do not suppress (as it is not involved + // in bringing up the UI) + // 2/ if the resolved and default stream is MUSIC, and media is playing, do not suppress + // 3/ otherwise suppress the first adjustments that occur during the "long press + // timeout" interval. Note this is true regardless of whether this is a "real long + // press" (where the user keeps pressing on the volume button), or repeated single + // presses (here we don't know if we are in a real long press, or repeated fast + // button presses). + // Once the long press timeout occurs (mNextLongPress reset to 0), do not suppress. + // Example: for a default and resolved stream of MUSIC, this allows modifying rapidly + // the volume when media is playing (whether by long press or repeated individual + // presses), or to bring up the volume UI when media is not playing, in order to make + // another change (e.g. switch ringer modes) without changing media volume. + if (resolvedStream == DEFAULT_VOL_STREAM_NO_PLAYBACK && mController != null) { + // never suppress media vol adjustement during media playback + if (resolvedStream == AudioSystem.STREAM_MUSIC + && AudioSystem.isStreamActive(AudioSystem.STREAM_MUSIC, mLongPressTimeout)) + { + // media is playing, adjust the volume right away + return false; + } + final long now = SystemClock.uptimeMillis(); if ((flags & AudioManager.FLAG_SHOW_UI) != 0 && !mVisible) { - // ui will become visible + // UI is not visible yet, adjustment is ignored if (mNextLongPress < now) { mNextLongPress = now + mLongPressTimeout; } |