diff --git a/services/core/java/com/android/server/media/MediaSessionRecord.java b/services/core/java/com/android/server/media/MediaSessionRecord.java index e06e94815b6fe..f15a02253818e 100644 --- a/services/core/java/com/android/server/media/MediaSessionRecord.java +++ b/services/core/java/com/android/server/media/MediaSessionRecord.java @@ -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; @@ -241,6 +242,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; } @@ -252,8 +254,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);