Merge "Fix volume slider not showing when casting in the background" into udc-dev am: f96e49ede6
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23726250 Change-Id: I48000dd7f1f7a623eed935040f96593e5c1873b6 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package com.android.server.media;
|
package com.android.server.media;
|
||||||
|
|
||||||
|
import static android.media.MediaRoute2Info.PLAYBACK_VOLUME_FIXED;
|
||||||
import static android.media.VolumeProvider.VOLUME_CONTROL_ABSOLUTE;
|
import static android.media.VolumeProvider.VOLUME_CONTROL_ABSOLUTE;
|
||||||
import static android.media.VolumeProvider.VOLUME_CONTROL_FIXED;
|
import static android.media.VolumeProvider.VOLUME_CONTROL_FIXED;
|
||||||
import static android.media.VolumeProvider.VOLUME_CONTROL_RELATIVE;
|
import static android.media.VolumeProvider.VOLUME_CONTROL_RELATIVE;
|
||||||
@@ -44,7 +45,9 @@ import android.media.AudioAttributes;
|
|||||||
import android.media.AudioManager;
|
import android.media.AudioManager;
|
||||||
import android.media.AudioSystem;
|
import android.media.AudioSystem;
|
||||||
import android.media.MediaMetadata;
|
import android.media.MediaMetadata;
|
||||||
|
import android.media.MediaRouter2Manager;
|
||||||
import android.media.Rating;
|
import android.media.Rating;
|
||||||
|
import android.media.RoutingSessionInfo;
|
||||||
import android.media.VolumeProvider;
|
import android.media.VolumeProvider;
|
||||||
import android.media.session.ISession;
|
import android.media.session.ISession;
|
||||||
import android.media.session.ISessionCallback;
|
import android.media.session.ISessionCallback;
|
||||||
@@ -510,7 +513,33 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canHandleVolumeKey() {
|
public boolean canHandleVolumeKey() {
|
||||||
return mVolumeControlType != VOLUME_CONTROL_FIXED;
|
if (isPlaybackTypeLocal()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (mVolumeControlType == VOLUME_CONTROL_FIXED) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (mVolumeAdjustmentForRemoteGroupSessions) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// See b/228021646 for details.
|
||||||
|
MediaRouter2Manager mRouter2Manager = MediaRouter2Manager.getInstance(mContext);
|
||||||
|
List<RoutingSessionInfo> sessions = mRouter2Manager.getRoutingSessions(mPackageName);
|
||||||
|
boolean foundNonSystemSession = false;
|
||||||
|
boolean remoteSessionAllowVolumeAdjustment = true;
|
||||||
|
for (RoutingSessionInfo session : sessions) {
|
||||||
|
if (!session.isSystemSession()) {
|
||||||
|
foundNonSystemSession = true;
|
||||||
|
if (session.getVolumeHandling() == PLAYBACK_VOLUME_FIXED) {
|
||||||
|
remoteSessionAllowVolumeAdjustment = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!foundNonSystemSession) {
|
||||||
|
Log.d(TAG, "Package " + mPackageName
|
||||||
|
+ " has a remote media session but no associated routing session");
|
||||||
|
}
|
||||||
|
return foundNonSystemSession && remoteSessionAllowVolumeAdjustment;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user