summaryrefslogtreecommitdiffstats
path: root/services/core/java/com/android/server/media
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2014-12-19 23:28:51 +0000
committerandroid-build-merger <android-build-merger@google.com>2014-12-19 23:28:51 +0000
commit2a38b6913fd28553abab67dfa0cfed7cabed6efa (patch)
tree55c178ffdf85f4ca8b93a5bc092ff11023eb8d79 /services/core/java/com/android/server/media
parenta285e9ed82071077d55c41471dd5437ec2f41ba4 (diff)
parent6d1cb48da45f70c2e8f73277bfb219e80a329778 (diff)
downloadframeworks_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.java26
-rw-r--r--services/core/java/com/android/server/media/MediaSessionService.java20
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) {