diff options
author | Eric Laurent <elaurent@google.com> | 2014-12-19 23:28:51 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2014-12-19 23:28:51 +0000 |
commit | 2a38b6913fd28553abab67dfa0cfed7cabed6efa (patch) | |
tree | 55c178ffdf85f4ca8b93a5bc092ff11023eb8d79 /services/core/java/com/android/server/media | |
parent | a285e9ed82071077d55c41471dd5437ec2f41ba4 (diff) | |
parent | 6d1cb48da45f70c2e8f73277bfb219e80a329778 (diff) | |
download | frameworks_base-2a38b6913fd28553abab67dfa0cfed7cabed6efa.zip frameworks_base-2a38b6913fd28553abab67dfa0cfed7cabed6efa.tar.gz frameworks_base-2a38b6913fd28553abab67dfa0cfed7cabed6efa.tar.bz2 |
am a1bd2d00: am 1ed9a88e: Merge "MediaSession: unmute stream when adjusting volume" into lmp-mr1-dev
automerge: 6d1cb48
* commit '6d1cb48da45f70c2e8f73277bfb219e80a329778':
MediaSession: unmute stream when adjusting volume
Diffstat (limited to 'services/core/java/com/android/server/media')
-rw-r--r-- | services/core/java/com/android/server/media/MediaSessionRecord.java | 26 | ||||
-rw-r--r-- | services/core/java/com/android/server/media/MediaSessionService.java | 20 |
2 files changed, 35 insertions, 11 deletions
diff --git a/services/core/java/com/android/server/media/MediaSessionRecord.java b/services/core/java/com/android/server/media/MediaSessionRecord.java index 7147036..b5deda2 100644 --- a/services/core/java/com/android/server/media/MediaSessionRecord.java +++ b/services/core/java/com/android/server/media/MediaSessionRecord.java @@ -261,41 +261,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 { diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java index b4ec607..82be1bb 100644 --- a/services/core/java/com/android/server/media/MediaSessionService.java +++ b/services/core/java/com/android/server/media/MediaSessionService.java @@ -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) { |