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

Commit 6d1cb48d authored by Eric Laurent's avatar Eric Laurent Committed by Android Git Automerger
Browse files

am a1bd2d00: am 1ed9a88e: Merge "MediaSession: unmute stream when adjusting...

am a1bd2d00: am 1ed9a88e: Merge "MediaSession: unmute stream when adjusting volume" into lmp-mr1-dev

* commit 'a1bd2d00':
  MediaSession: unmute stream when adjusting volume
parents ed3c2962 a1bd2d00
Loading
Loading
Loading
Loading
+22 −4
Original line number Diff line number Diff line
@@ -257,41 +257,59 @@ public class MediaSessionRecord implements IBinder.DeathRecipient {
            if (mUseMasterVolume) {
                // If this device only uses master volume and playback is local
                // just adjust the master volume and return.
                boolean isMasterMute = mAudioManager.isMasterMute();
                if (isMute) {
                    mAudioManagerInternal.setMasterMuteForUid(!mAudioManager.isMasterMute(),
                    mAudioManagerInternal.setMasterMuteForUid(!isMasterMute,
                            flags, packageName, mICallback, uid);
                } else {
                    mAudioManagerInternal.adjustMasterVolumeForUid(direction, flags, packageName,
                            uid);
                    if (isMasterMute) {
                        mAudioManagerInternal.setMasterMuteForUid(false,
                                flags, packageName, mICallback, uid);
                    }
                }
                return;
            }
            int stream = AudioAttributes.toLegacyStreamType(mAudioAttrs);
            boolean isStreamMute = mAudioManager.isStreamMute(stream);
            if (useSuggested) {
                if (AudioSystem.isStreamActive(stream, 0)) {
                    if (isMute) {
                        mAudioManager.setStreamMute(stream, !mAudioManager.isStreamMute(stream));
                        mAudioManager.setStreamMute(stream, !isStreamMute);
                    } else {
                        mAudioManagerInternal.adjustSuggestedStreamVolumeForUid(stream, direction,
                                flags, packageName, uid);
                        if (isStreamMute) {
                            mAudioManager.setStreamMute(stream, false);
                        }
                    }
                } else {
                    flags |= previousFlagPlaySound;
                    isStreamMute =
                            mAudioManager.isStreamMute(AudioManager.USE_DEFAULT_STREAM_TYPE);
                    if (isMute) {
                        mAudioManager.setStreamMute(AudioManager.USE_DEFAULT_STREAM_TYPE,
                                !mAudioManager.isStreamMute(AudioManager.USE_DEFAULT_STREAM_TYPE));
                                !isStreamMute);
                    } else {
                        mAudioManagerInternal.adjustSuggestedStreamVolumeForUid(
                                AudioManager.USE_DEFAULT_STREAM_TYPE, direction, flags, packageName,
                                uid);
                        if (isStreamMute) {
                            mAudioManager.setStreamMute(AudioManager.USE_DEFAULT_STREAM_TYPE,
                                    false);
                        }
                    }
                }
            } else {
                if (isMute) {
                    mAudioManager.setStreamMute(stream, !mAudioManager.isStreamMute(stream));
                    mAudioManager.setStreamMute(stream, !isStreamMute);
                } else {
                    mAudioManagerInternal.adjustStreamVolumeForUid(stream, direction, flags,
                            packageName, uid);
                    if (isStreamMute) {
                        mAudioManager.setStreamMute(stream, false);
                    }
                }
            }
        } else {
+13 −7
Original line number Diff line number Diff line
@@ -829,21 +829,27 @@ public class MediaSessionService extends SystemService implements Monitor {
                    return;
                }
                try {
                    String packageName = getContext().getOpPackageName();
                    if (mUseMasterVolume) {
                        boolean isMasterMute = mAudioService.isMasterMute();
                        if (direction == MediaSessionManager.DIRECTION_MUTE) {
                            mAudioService.setMasterMute(!mAudioService.isMasterMute(), flags,
                                    getContext().getOpPackageName(), mICallback);
                            mAudioService.setMasterMute(!isMasterMute, flags, packageName, mICallback);
                        } else {
                            mAudioService.adjustMasterVolume(direction, flags,
                                    getContext().getOpPackageName());
                            mAudioService.adjustMasterVolume(direction, flags, packageName);
                            if (isMasterMute) {
                                mAudioService.setMasterMute(false, flags, packageName, mICallback);
                            }
                        }
                    } else {
                        boolean isStreamMute = mAudioService.isStreamMute(suggestedStream);
                        if (direction == MediaSessionManager.DIRECTION_MUTE) {
                            mAudioService.setStreamMute(suggestedStream,
                                    !mAudioService.isStreamMute(suggestedStream), mICallback);
                            mAudioService.setStreamMute(suggestedStream, !isStreamMute, mICallback);
                        } else {
                            mAudioService.adjustSuggestedStreamVolume(direction, suggestedStream,
                                    flags, getContext().getOpPackageName());
                                    flags, packageName);
                            if (isStreamMute) {
                                mAudioService.setStreamMute(suggestedStream, false, mICallback);
                            }
                        }
                    }
                } catch (RemoteException e) {