Notify the system of all remote volume changes
If a volume change occurred because it was sent through the MediaController directly it wasn't showing the system's volume UI. This fixes things so the volume slider gets shown for all volume requests with the SHOW_UI flag set. bug:19036130 Change-Id: I1f7cb2e03386e2f3f7bc448cb4c38a71573775ff
This commit is contained in:
@@ -330,6 +330,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient {
|
||||
if (volumeBefore != mOptimisticVolume) {
|
||||
pushVolumeUpdate();
|
||||
}
|
||||
mService.notifyRemoteVolumeChanged(flags, this);
|
||||
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "Adjusted optimistic volume to " + mOptimisticVolume + " max is "
|
||||
@@ -357,6 +358,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient {
|
||||
if (volumeBefore != mOptimisticVolume) {
|
||||
pushVolumeUpdate();
|
||||
}
|
||||
mService.notifyRemoteVolumeChanged(flags, this);
|
||||
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "Set optimistic volume to " + mOptimisticVolume + " max is "
|
||||
|
||||
@@ -143,6 +143,20 @@ public class MediaSessionService extends SystemService implements Monitor {
|
||||
mHandler.post(MessageHandler.MSG_SESSIONS_CHANGED, record.getUserId(), 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tells the system UI that volume has changed on a remote session.
|
||||
*/
|
||||
public void notifyRemoteVolumeChanged(int flags, MediaSessionRecord session) {
|
||||
if (mRvc == null) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
mRvc.remoteVolumeChanged(session.getControllerBinder(), flags);
|
||||
} catch (Exception e) {
|
||||
Log.wtf(TAG, "Error sending volume change to system UI.", e);
|
||||
}
|
||||
}
|
||||
|
||||
public void onSessionPlaystateChange(MediaSessionRecord record, int oldState, int newState) {
|
||||
boolean updateSessions = false;
|
||||
synchronized (mLock) {
|
||||
@@ -864,14 +878,6 @@ public class MediaSessionService extends SystemService implements Monitor {
|
||||
} else {
|
||||
session.adjustVolume(direction, flags, getContext().getPackageName(),
|
||||
UserHandle.myUserId(), true);
|
||||
if (session.getPlaybackType() == PlaybackInfo.PLAYBACK_TYPE_REMOTE
|
||||
&& mRvc != null && direction != MediaSessionManager.DIRECTION_MUTE) {
|
||||
try {
|
||||
mRvc.remoteVolumeChanged(session.getControllerBinder(), flags);
|
||||
} catch (Exception e) {
|
||||
Log.wtf(TAG, "Error sending volume change to system UI.", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user