Merge "MediaSession: unmute stream when adjusting volume" into lmp-mr1-dev

This commit is contained in:
Eric Laurent
2014-12-19 23:17:05 +00:00
committed by Android (Google) Code Review
2 changed files with 35 additions and 11 deletions

View File

@@ -257,41 +257,59 @@ public class MediaSessionRecord implements IBinder.DeathRecipient {
if (mUseMasterVolume) { if (mUseMasterVolume) {
// If this device only uses master volume and playback is local // If this device only uses master volume and playback is local
// just adjust the master volume and return. // just adjust the master volume and return.
boolean isMasterMute = mAudioManager.isMasterMute();
if (isMute) { if (isMute) {
mAudioManagerInternal.setMasterMuteForUid(!mAudioManager.isMasterMute(), mAudioManagerInternal.setMasterMuteForUid(!isMasterMute,
flags, packageName, mICallback, uid); flags, packageName, mICallback, uid);
} else { } else {
mAudioManagerInternal.adjustMasterVolumeForUid(direction, flags, packageName, mAudioManagerInternal.adjustMasterVolumeForUid(direction, flags, packageName,
uid); uid);
if (isMasterMute) {
mAudioManagerInternal.setMasterMuteForUid(false,
flags, packageName, mICallback, uid);
}
} }
return; return;
} }
int stream = AudioAttributes.toLegacyStreamType(mAudioAttrs); int stream = AudioAttributes.toLegacyStreamType(mAudioAttrs);
boolean isStreamMute = mAudioManager.isStreamMute(stream);
if (useSuggested) { if (useSuggested) {
if (AudioSystem.isStreamActive(stream, 0)) { if (AudioSystem.isStreamActive(stream, 0)) {
if (isMute) { if (isMute) {
mAudioManager.setStreamMute(stream, !mAudioManager.isStreamMute(stream)); mAudioManager.setStreamMute(stream, !isStreamMute);
} else { } else {
mAudioManagerInternal.adjustSuggestedStreamVolumeForUid(stream, direction, mAudioManagerInternal.adjustSuggestedStreamVolumeForUid(stream, direction,
flags, packageName, uid); flags, packageName, uid);
if (isStreamMute) {
mAudioManager.setStreamMute(stream, false);
}
} }
} else { } else {
flags |= previousFlagPlaySound; flags |= previousFlagPlaySound;
isStreamMute =
mAudioManager.isStreamMute(AudioManager.USE_DEFAULT_STREAM_TYPE);
if (isMute) { if (isMute) {
mAudioManager.setStreamMute(AudioManager.USE_DEFAULT_STREAM_TYPE, mAudioManager.setStreamMute(AudioManager.USE_DEFAULT_STREAM_TYPE,
!mAudioManager.isStreamMute(AudioManager.USE_DEFAULT_STREAM_TYPE)); !isStreamMute);
} else { } else {
mAudioManagerInternal.adjustSuggestedStreamVolumeForUid( mAudioManagerInternal.adjustSuggestedStreamVolumeForUid(
AudioManager.USE_DEFAULT_STREAM_TYPE, direction, flags, packageName, AudioManager.USE_DEFAULT_STREAM_TYPE, direction, flags, packageName,
uid); uid);
if (isStreamMute) {
mAudioManager.setStreamMute(AudioManager.USE_DEFAULT_STREAM_TYPE,
false);
}
} }
} }
} else { } else {
if (isMute) { if (isMute) {
mAudioManager.setStreamMute(stream, !mAudioManager.isStreamMute(stream)); mAudioManager.setStreamMute(stream, !isStreamMute);
} else { } else {
mAudioManagerInternal.adjustStreamVolumeForUid(stream, direction, flags, mAudioManagerInternal.adjustStreamVolumeForUid(stream, direction, flags,
packageName, uid); packageName, uid);
if (isStreamMute) {
mAudioManager.setStreamMute(stream, false);
}
} }
} }
} else { } else {

View File

@@ -829,21 +829,27 @@ public class MediaSessionService extends SystemService implements Monitor {
return; return;
} }
try { try {
String packageName = getContext().getOpPackageName();
if (mUseMasterVolume) { if (mUseMasterVolume) {
boolean isMasterMute = mAudioService.isMasterMute();
if (direction == MediaSessionManager.DIRECTION_MUTE) { if (direction == MediaSessionManager.DIRECTION_MUTE) {
mAudioService.setMasterMute(!mAudioService.isMasterMute(), flags, mAudioService.setMasterMute(!isMasterMute, flags, packageName, mICallback);
getContext().getOpPackageName(), mICallback);
} else { } else {
mAudioService.adjustMasterVolume(direction, flags, mAudioService.adjustMasterVolume(direction, flags, packageName);
getContext().getOpPackageName()); if (isMasterMute) {
mAudioService.setMasterMute(false, flags, packageName, mICallback);
}
} }
} else { } else {
boolean isStreamMute = mAudioService.isStreamMute(suggestedStream);
if (direction == MediaSessionManager.DIRECTION_MUTE) { if (direction == MediaSessionManager.DIRECTION_MUTE) {
mAudioService.setStreamMute(suggestedStream, mAudioService.setStreamMute(suggestedStream, !isStreamMute, mICallback);
!mAudioService.isStreamMute(suggestedStream), mICallback);
} else { } else {
mAudioService.adjustSuggestedStreamVolume(direction, suggestedStream, mAudioService.adjustSuggestedStreamVolume(direction, suggestedStream,
flags, getContext().getOpPackageName()); flags, packageName);
if (isStreamMute) {
mAudioService.setStreamMute(suggestedStream, false, mICallback);
}
} }
} }
} catch (RemoteException e) { } catch (RemoteException e) {