Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 165809b3 authored by RoboErik's avatar RoboErik
Browse files

Send volume keys to the default stream if not actually playing

This ensures that we'll only adjust volume on a session's stream if
that stream is actually in use.

bug:17690423
Change-Id: I5fce8265a015bbc5034afa16719d9a0bbf257598
parent df382cad
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.content.Intent;
import android.content.pm.ParceledListSlice;
import android.media.AudioManager;
import android.media.AudioManagerInternal;
import android.media.AudioSystem;
import android.media.MediaDescription;
import android.media.MediaMetadata;
import android.media.Rating;
@@ -237,6 +238,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient {
     */
    public void adjustVolume(int direction, int flags, String packageName, int uid,
            boolean useSuggested) {
        int previousFlagPlaySound = flags & AudioManager.FLAG_PLAY_SOUND;
        if (isPlaybackActive(false) || hasFlag(MediaSession.FLAG_EXCLUSIVE_GLOBAL_PRIORITY)) {
            flags &= ~AudioManager.FLAG_PLAY_SOUND;
        }
@@ -248,8 +250,15 @@ public class MediaSessionRecord implements IBinder.DeathRecipient {
        if (mVolumeType == PlaybackInfo.PLAYBACK_TYPE_LOCAL) {
            int stream = AudioAttributes.toLegacyStreamType(mAudioAttrs);
            if (useSuggested) {
                mAudioManagerInternal.adjustSuggestedStreamVolumeForUid(stream, direction, flags,
                        packageName, uid);
                if (AudioSystem.isStreamActive(stream, 0)) {
                    mAudioManagerInternal.adjustSuggestedStreamVolumeForUid(stream, direction,
                            flags, packageName, uid);
                } else {
                    flags |= previousFlagPlaySound;
                    mAudioManagerInternal.adjustSuggestedStreamVolumeForUid(
                            AudioManager.USE_DEFAULT_STREAM_TYPE, direction, flags, packageName,
                            uid);
                }
            } else {
                mAudioManagerInternal.adjustStreamVolumeForUid(stream, direction, flags,
                        packageName, uid);