diff options
| author | Eric Laurent <elaurent@google.com> | 2014-12-19 23:27:25 +0000 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2014-12-19 23:27:25 +0000 |
| commit | 6d1cb48da45f70c2e8f73277bfb219e80a329778 (patch) | |
| tree | 162d6ecc902dcad14535d6bd0b27d4c6b438a057 | |
| parent | ed3c2962be1e2966c3b46f20e81d2902a8302d8b (diff) | |
| parent | a1bd2d0008e5d9cb563936b7f044d8796c37fb2f (diff) | |
| download | frameworks_base-6d1cb48da45f70c2e8f73277bfb219e80a329778.zip frameworks_base-6d1cb48da45f70c2e8f73277bfb219e80a329778.tar.gz frameworks_base-6d1cb48da45f70c2e8f73277bfb219e80a329778.tar.bz2 | |
am a1bd2d00: am 1ed9a88e: Merge "MediaSession: unmute stream when adjusting volume" into lmp-mr1-dev
* commit 'a1bd2d0008e5d9cb563936b7f044d8796c37fb2f':
MediaSession: unmute stream when adjusting volume
| -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 2c61d2c..1fba7bb 100644 --- a/services/core/java/com/android/server/media/MediaSessionRecord.java +++ b/services/core/java/com/android/server/media/MediaSessionRecord.java @@ -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 { 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) { |
