Merge "MediaSession: unmute stream when adjusting volume" into lmp-mr1-dev
This commit is contained in:
@@ -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 {
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user