Loading core/res/res/values/config.xml +0 −4 Original line number Original line Diff line number Diff line Loading @@ -2309,10 +2309,6 @@ spatial audio is enabled for a newly connected audio device --> spatial audio is enabled for a newly connected audio device --> <bool name="config_spatial_audio_head_tracking_enabled_default">false</bool> <bool name="config_spatial_audio_head_tracking_enabled_default">false</bool> <!-- Flag indicating whether platform level volume adjustments are enabled for remote sessions on grouped devices. --> <bool name="config_volumeAdjustmentForRemoteGroupSessions">true</bool> <!-- Flag indicating current media Output Switcher version. --> <!-- Flag indicating current media Output Switcher version. --> <integer name="config_mediaOutputSwitchDialogVersion">1</integer> <integer name="config_mediaOutputSwitchDialogVersion">1</integer> Loading core/res/res/values/symbols.xml +0 −2 Original line number Original line Diff line number Diff line Loading @@ -5102,8 +5102,6 @@ <java-symbol type="dimen" name="config_wallpaperDimAmount" /> <java-symbol type="dimen" name="config_wallpaperDimAmount" /> <java-symbol type="bool" name="config_volumeAdjustmentForRemoteGroupSessions" /> <java-symbol type="integer" name="config_mediaOutputSwitchDialogVersion" /> <java-symbol type="integer" name="config_mediaOutputSwitchDialogVersion" /> <!-- List of shared library packages that should be loaded by the classloader after the <!-- List of shared library packages that should be loaded by the classloader after the Loading media/java/android/media/RoutingSessionInfo.java +1 −26 Original line number Original line Diff line number Diff line Loading @@ -22,7 +22,6 @@ import android.annotation.FlaggedApi; import android.annotation.IntDef; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.Nullable; import android.content.res.Resources; import android.os.Bundle; import android.os.Bundle; import android.os.Parcel; import android.os.Parcel; import android.os.Parcelable; import android.os.Parcelable; Loading Loading @@ -57,8 +56,6 @@ public final class RoutingSessionInfo implements Parcelable { } } }; }; private static final String TAG = "RoutingSessionInfo"; private static final String KEY_GROUP_ROUTE = "androidx.mediarouter.media.KEY_GROUP_ROUTE"; private static final String KEY_GROUP_ROUTE = "androidx.mediarouter.media.KEY_GROUP_ROUTE"; private static final String KEY_VOLUME_HANDLING = "volumeHandling"; private static final String KEY_VOLUME_HANDLING = "volumeHandling"; Loading Loading @@ -142,15 +139,7 @@ public final class RoutingSessionInfo implements Parcelable { mVolume = builder.mVolume; mVolume = builder.mVolume; mIsSystemSession = builder.mIsSystemSession; mIsSystemSession = builder.mIsSystemSession; mVolumeHandling = builder.mVolumeHandling; boolean volumeAdjustmentForRemoteGroupSessions = Resources.getSystem().getBoolean( com.android.internal.R.bool.config_volumeAdjustmentForRemoteGroupSessions); mVolumeHandling = defineVolumeHandling( mIsSystemSession, builder.mVolumeHandling, mSelectedRoutes, volumeAdjustmentForRemoteGroupSessions); mControlHints = updateVolumeHandlingInHints(builder.mControlHints, mVolumeHandling); mControlHints = updateVolumeHandlingInHints(builder.mControlHints, mVolumeHandling); mTransferReason = builder.mTransferReason; mTransferReason = builder.mTransferReason; Loading Loading @@ -207,20 +196,6 @@ public final class RoutingSessionInfo implements Parcelable { return controlHints; return controlHints; } } @MediaRoute2Info.PlaybackVolume private static int defineVolumeHandling( boolean isSystemSession, @MediaRoute2Info.PlaybackVolume int volumeHandling, List<String> selectedRoutes, boolean volumeAdjustmentForRemoteGroupSessions) { if (!isSystemSession && !volumeAdjustmentForRemoteGroupSessions && selectedRoutes.size() > 1) { return MediaRoute2Info.PLAYBACK_VOLUME_FIXED; } return volumeHandling; } @NonNull @NonNull private static String ensureString(@Nullable String str) { private static String ensureString(@Nullable String str) { return str != null ? str : ""; return str != null ? str : ""; Loading media/tests/MediaRouter/src/com/android/mediaroutertest/RoutingSessionInfoTest.java +0 −22 Original line number Original line Diff line number Diff line Loading @@ -18,8 +18,6 @@ package com.android.mediaroutertest; import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat; import android.content.res.Resources; import android.media.MediaRoute2Info; import android.media.RoutingSessionInfo; import android.media.RoutingSessionInfo; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.ext.junit.runners.AndroidJUnit4; Loading Loading @@ -95,24 +93,4 @@ public class RoutingSessionInfoTest { assertThat(sessionInfoWithProviderId2.getTransferableRoutes()) assertThat(sessionInfoWithProviderId2.getTransferableRoutes()) .isEqualTo(sessionInfoWithProviderId.getTransferableRoutes()); .isEqualTo(sessionInfoWithProviderId.getTransferableRoutes()); } } @Test public void testGetVolumeHandlingGroupSession() { RoutingSessionInfo sessionInfo = new RoutingSessionInfo.Builder( TEST_ID, TEST_CLIENT_PACKAGE_NAME) .setName(TEST_NAME) .addSelectedRoute(TEST_ROUTE_ID_0) .addSelectedRoute(TEST_ROUTE_ID_2) .setVolumeHandling(MediaRoute2Info.PLAYBACK_VOLUME_VARIABLE) .build(); boolean volumeAdjustmentForRemoteGroupSessions = Resources.getSystem().getBoolean( com.android.internal.R.bool.config_volumeAdjustmentForRemoteGroupSessions); int expectedResult = volumeAdjustmentForRemoteGroupSessions ? MediaRoute2Info.PLAYBACK_VOLUME_VARIABLE : MediaRoute2Info.PLAYBACK_VOLUME_FIXED; assertThat(sessionInfo.getVolumeHandling()).isEqualTo(expectedResult); } } } packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java +17 −62 Original line number Original line Diff line number Diff line Loading @@ -37,11 +37,8 @@ import android.media.AudioManager; import android.media.AudioSystem; import android.media.AudioSystem; import android.media.IAudioService; import android.media.IAudioService; import android.media.IVolumeController; import android.media.IVolumeController; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; import android.media.MediaRouter2Manager; import android.media.RoutingSessionInfo; import android.media.VolumePolicy; import android.media.VolumePolicy; import android.media.session.MediaController; import android.media.session.MediaController.PlaybackInfo; import android.media.session.MediaController.PlaybackInfo; import android.media.session.MediaSession.Token; import android.media.session.MediaSession.Token; import android.net.Uri; import android.net.Uri; Loading Loading @@ -88,7 +85,6 @@ import dalvik.annotation.optimization.NeverCompile; import java.io.PrintWriter; import java.io.PrintWriter; import java.util.HashMap; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map; import java.util.Objects; import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap; Loading Loading @@ -217,7 +213,7 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa VolumeDialogControllerImpl.class.getSimpleName()); VolumeDialogControllerImpl.class.getSimpleName()); mWorker = new W(mWorkerLooper); mWorker = new W(mWorkerLooper); mRouter2Manager = MediaRouter2Manager.getInstance(mContext); mRouter2Manager = MediaRouter2Manager.getInstance(mContext); mMediaSessionsCallbacksW = new MediaSessionsCallbacks(mContext); mMediaSessionsCallbacksW = new MediaSessionsCallbacks(); mMediaSessions = createMediaSessions(mContext, mWorkerLooper, mMediaSessionsCallbacksW); mMediaSessions = createMediaSessions(mContext, mWorkerLooper, mMediaSessionsCallbacksW); mAudioSharingInteractor = audioSharingInteractor; mAudioSharingInteractor = audioSharingInteractor; mJavaAdapter = javaAdapter; mJavaAdapter = javaAdapter; Loading Loading @@ -1360,16 +1356,9 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa private final HashMap<Token, Integer> mRemoteStreams = new HashMap<>(); private final HashMap<Token, Integer> mRemoteStreams = new HashMap<>(); private int mNextStream = DYNAMIC_STREAM_REMOTE_START_INDEX; private int mNextStream = DYNAMIC_STREAM_REMOTE_START_INDEX; private final boolean mVolumeAdjustmentForRemoteGroupSessions; public MediaSessionsCallbacks(Context context) { mVolumeAdjustmentForRemoteGroupSessions = context.getResources().getBoolean( com.android.internal.R.bool.config_volumeAdjustmentForRemoteGroupSessions); } @Override @Override public void onRemoteUpdate(Token token, String name, PlaybackInfo pi) { public void onRemoteUpdate(Token token, String name, PlaybackInfo pi) { if (showForSession(token)) { addStream(token, "onRemoteUpdate"); addStream(token, "onRemoteUpdate"); int stream = 0; int stream = 0; Loading Loading @@ -1397,11 +1386,9 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa mCallbacks.onStateChanged(mState); mCallbacks.onStateChanged(mState); } } } } } @Override @Override public void onRemoteVolumeChanged(Token token, int flags) { public void onRemoteVolumeChanged(Token token, int flags) { if (showForSession(token)) { addStream(token, "onRemoteVolumeChanged"); addStream(token, "onRemoteVolumeChanged"); int stream = 0; int stream = 0; synchronized (mRemoteStreams) { synchronized (mRemoteStreams) { Loading @@ -1421,16 +1408,17 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa onShowRequestedW(Events.SHOW_REASON_REMOTE_VOLUME_CHANGED); onShowRequestedW(Events.SHOW_REASON_REMOTE_VOLUME_CHANGED); } } } } } @Override @Override public void onRemoteRemoved(Token token) { public void onRemoteRemoved(Token token) { if (showForSession(token)) { int stream; int stream = 0; synchronized (mRemoteStreams) { synchronized (mRemoteStreams) { if (!mRemoteStreams.containsKey(token)) { if (!mRemoteStreams.containsKey(token)) { Log.d(TAG, "onRemoteRemoved: stream doesn't exist, " Log.d( + "aborting remote removed for token:" + token.toString()); TAG, "onRemoteRemoved: stream doesn't exist, " + "aborting remote removed for token:" + token.toString()); return; return; } } stream = mRemoteStreams.get(token); stream = mRemoteStreams.get(token); Loading @@ -1441,7 +1429,6 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa } } mCallbacks.onStateChanged(mState); mCallbacks.onStateChanged(mState); } } } public void setStreamVolume(int stream, int level) { public void setStreamVolume(int stream, int level) { final Token token = findToken(stream); final Token token = findToken(stream); Loading @@ -1449,40 +1436,8 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa Log.w(TAG, "setStreamVolume: No token found for stream: " + stream); Log.w(TAG, "setStreamVolume: No token found for stream: " + stream); return; return; } } if (showForSession(token)) { mMediaSessions.setVolume(token, level); mMediaSessions.setVolume(token, level); } } } private boolean showForSession(Token token) { if (mVolumeAdjustmentForRemoteGroupSessions) { if (DEBUG) { Log.d(TAG, "Volume adjustment for remote group sessions allowed," + " showForSession: true"); } return true; } MediaController ctr = new MediaController(mContext, token); String packageName = ctr.getPackageName(); List<RoutingSessionInfo> sessions = mRouter2Manager.getRoutingSessions(packageName); if (DEBUG) { Log.d(TAG, "Found " + sessions.size() + " routing sessions for package name " + packageName); } for (RoutingSessionInfo session : sessions) { if (DEBUG) { Log.d(TAG, "Found routingSessionInfo: " + session); } if (!session.isSystemSession() && session.getVolumeHandling() != MediaRoute2Info.PLAYBACK_VOLUME_FIXED) { return true; } } Log.d(TAG, "No routing session for " + packageName); return false; } private Token findToken(int stream) { private Token findToken(int stream) { synchronized (mRemoteStreams) { synchronized (mRemoteStreams) { Loading Loading
core/res/res/values/config.xml +0 −4 Original line number Original line Diff line number Diff line Loading @@ -2309,10 +2309,6 @@ spatial audio is enabled for a newly connected audio device --> spatial audio is enabled for a newly connected audio device --> <bool name="config_spatial_audio_head_tracking_enabled_default">false</bool> <bool name="config_spatial_audio_head_tracking_enabled_default">false</bool> <!-- Flag indicating whether platform level volume adjustments are enabled for remote sessions on grouped devices. --> <bool name="config_volumeAdjustmentForRemoteGroupSessions">true</bool> <!-- Flag indicating current media Output Switcher version. --> <!-- Flag indicating current media Output Switcher version. --> <integer name="config_mediaOutputSwitchDialogVersion">1</integer> <integer name="config_mediaOutputSwitchDialogVersion">1</integer> Loading
core/res/res/values/symbols.xml +0 −2 Original line number Original line Diff line number Diff line Loading @@ -5102,8 +5102,6 @@ <java-symbol type="dimen" name="config_wallpaperDimAmount" /> <java-symbol type="dimen" name="config_wallpaperDimAmount" /> <java-symbol type="bool" name="config_volumeAdjustmentForRemoteGroupSessions" /> <java-symbol type="integer" name="config_mediaOutputSwitchDialogVersion" /> <java-symbol type="integer" name="config_mediaOutputSwitchDialogVersion" /> <!-- List of shared library packages that should be loaded by the classloader after the <!-- List of shared library packages that should be loaded by the classloader after the Loading
media/java/android/media/RoutingSessionInfo.java +1 −26 Original line number Original line Diff line number Diff line Loading @@ -22,7 +22,6 @@ import android.annotation.FlaggedApi; import android.annotation.IntDef; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.Nullable; import android.content.res.Resources; import android.os.Bundle; import android.os.Bundle; import android.os.Parcel; import android.os.Parcel; import android.os.Parcelable; import android.os.Parcelable; Loading Loading @@ -57,8 +56,6 @@ public final class RoutingSessionInfo implements Parcelable { } } }; }; private static final String TAG = "RoutingSessionInfo"; private static final String KEY_GROUP_ROUTE = "androidx.mediarouter.media.KEY_GROUP_ROUTE"; private static final String KEY_GROUP_ROUTE = "androidx.mediarouter.media.KEY_GROUP_ROUTE"; private static final String KEY_VOLUME_HANDLING = "volumeHandling"; private static final String KEY_VOLUME_HANDLING = "volumeHandling"; Loading Loading @@ -142,15 +139,7 @@ public final class RoutingSessionInfo implements Parcelable { mVolume = builder.mVolume; mVolume = builder.mVolume; mIsSystemSession = builder.mIsSystemSession; mIsSystemSession = builder.mIsSystemSession; mVolumeHandling = builder.mVolumeHandling; boolean volumeAdjustmentForRemoteGroupSessions = Resources.getSystem().getBoolean( com.android.internal.R.bool.config_volumeAdjustmentForRemoteGroupSessions); mVolumeHandling = defineVolumeHandling( mIsSystemSession, builder.mVolumeHandling, mSelectedRoutes, volumeAdjustmentForRemoteGroupSessions); mControlHints = updateVolumeHandlingInHints(builder.mControlHints, mVolumeHandling); mControlHints = updateVolumeHandlingInHints(builder.mControlHints, mVolumeHandling); mTransferReason = builder.mTransferReason; mTransferReason = builder.mTransferReason; Loading Loading @@ -207,20 +196,6 @@ public final class RoutingSessionInfo implements Parcelable { return controlHints; return controlHints; } } @MediaRoute2Info.PlaybackVolume private static int defineVolumeHandling( boolean isSystemSession, @MediaRoute2Info.PlaybackVolume int volumeHandling, List<String> selectedRoutes, boolean volumeAdjustmentForRemoteGroupSessions) { if (!isSystemSession && !volumeAdjustmentForRemoteGroupSessions && selectedRoutes.size() > 1) { return MediaRoute2Info.PLAYBACK_VOLUME_FIXED; } return volumeHandling; } @NonNull @NonNull private static String ensureString(@Nullable String str) { private static String ensureString(@Nullable String str) { return str != null ? str : ""; return str != null ? str : ""; Loading
media/tests/MediaRouter/src/com/android/mediaroutertest/RoutingSessionInfoTest.java +0 −22 Original line number Original line Diff line number Diff line Loading @@ -18,8 +18,6 @@ package com.android.mediaroutertest; import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat; import android.content.res.Resources; import android.media.MediaRoute2Info; import android.media.RoutingSessionInfo; import android.media.RoutingSessionInfo; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.ext.junit.runners.AndroidJUnit4; Loading Loading @@ -95,24 +93,4 @@ public class RoutingSessionInfoTest { assertThat(sessionInfoWithProviderId2.getTransferableRoutes()) assertThat(sessionInfoWithProviderId2.getTransferableRoutes()) .isEqualTo(sessionInfoWithProviderId.getTransferableRoutes()); .isEqualTo(sessionInfoWithProviderId.getTransferableRoutes()); } } @Test public void testGetVolumeHandlingGroupSession() { RoutingSessionInfo sessionInfo = new RoutingSessionInfo.Builder( TEST_ID, TEST_CLIENT_PACKAGE_NAME) .setName(TEST_NAME) .addSelectedRoute(TEST_ROUTE_ID_0) .addSelectedRoute(TEST_ROUTE_ID_2) .setVolumeHandling(MediaRoute2Info.PLAYBACK_VOLUME_VARIABLE) .build(); boolean volumeAdjustmentForRemoteGroupSessions = Resources.getSystem().getBoolean( com.android.internal.R.bool.config_volumeAdjustmentForRemoteGroupSessions); int expectedResult = volumeAdjustmentForRemoteGroupSessions ? MediaRoute2Info.PLAYBACK_VOLUME_VARIABLE : MediaRoute2Info.PLAYBACK_VOLUME_FIXED; assertThat(sessionInfo.getVolumeHandling()).isEqualTo(expectedResult); } } }
packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java +17 −62 Original line number Original line Diff line number Diff line Loading @@ -37,11 +37,8 @@ import android.media.AudioManager; import android.media.AudioSystem; import android.media.AudioSystem; import android.media.IAudioService; import android.media.IAudioService; import android.media.IVolumeController; import android.media.IVolumeController; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; import android.media.MediaRouter2Manager; import android.media.RoutingSessionInfo; import android.media.VolumePolicy; import android.media.VolumePolicy; import android.media.session.MediaController; import android.media.session.MediaController.PlaybackInfo; import android.media.session.MediaController.PlaybackInfo; import android.media.session.MediaSession.Token; import android.media.session.MediaSession.Token; import android.net.Uri; import android.net.Uri; Loading Loading @@ -88,7 +85,6 @@ import dalvik.annotation.optimization.NeverCompile; import java.io.PrintWriter; import java.io.PrintWriter; import java.util.HashMap; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map; import java.util.Objects; import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap; Loading Loading @@ -217,7 +213,7 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa VolumeDialogControllerImpl.class.getSimpleName()); VolumeDialogControllerImpl.class.getSimpleName()); mWorker = new W(mWorkerLooper); mWorker = new W(mWorkerLooper); mRouter2Manager = MediaRouter2Manager.getInstance(mContext); mRouter2Manager = MediaRouter2Manager.getInstance(mContext); mMediaSessionsCallbacksW = new MediaSessionsCallbacks(mContext); mMediaSessionsCallbacksW = new MediaSessionsCallbacks(); mMediaSessions = createMediaSessions(mContext, mWorkerLooper, mMediaSessionsCallbacksW); mMediaSessions = createMediaSessions(mContext, mWorkerLooper, mMediaSessionsCallbacksW); mAudioSharingInteractor = audioSharingInteractor; mAudioSharingInteractor = audioSharingInteractor; mJavaAdapter = javaAdapter; mJavaAdapter = javaAdapter; Loading Loading @@ -1360,16 +1356,9 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa private final HashMap<Token, Integer> mRemoteStreams = new HashMap<>(); private final HashMap<Token, Integer> mRemoteStreams = new HashMap<>(); private int mNextStream = DYNAMIC_STREAM_REMOTE_START_INDEX; private int mNextStream = DYNAMIC_STREAM_REMOTE_START_INDEX; private final boolean mVolumeAdjustmentForRemoteGroupSessions; public MediaSessionsCallbacks(Context context) { mVolumeAdjustmentForRemoteGroupSessions = context.getResources().getBoolean( com.android.internal.R.bool.config_volumeAdjustmentForRemoteGroupSessions); } @Override @Override public void onRemoteUpdate(Token token, String name, PlaybackInfo pi) { public void onRemoteUpdate(Token token, String name, PlaybackInfo pi) { if (showForSession(token)) { addStream(token, "onRemoteUpdate"); addStream(token, "onRemoteUpdate"); int stream = 0; int stream = 0; Loading Loading @@ -1397,11 +1386,9 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa mCallbacks.onStateChanged(mState); mCallbacks.onStateChanged(mState); } } } } } @Override @Override public void onRemoteVolumeChanged(Token token, int flags) { public void onRemoteVolumeChanged(Token token, int flags) { if (showForSession(token)) { addStream(token, "onRemoteVolumeChanged"); addStream(token, "onRemoteVolumeChanged"); int stream = 0; int stream = 0; synchronized (mRemoteStreams) { synchronized (mRemoteStreams) { Loading @@ -1421,16 +1408,17 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa onShowRequestedW(Events.SHOW_REASON_REMOTE_VOLUME_CHANGED); onShowRequestedW(Events.SHOW_REASON_REMOTE_VOLUME_CHANGED); } } } } } @Override @Override public void onRemoteRemoved(Token token) { public void onRemoteRemoved(Token token) { if (showForSession(token)) { int stream; int stream = 0; synchronized (mRemoteStreams) { synchronized (mRemoteStreams) { if (!mRemoteStreams.containsKey(token)) { if (!mRemoteStreams.containsKey(token)) { Log.d(TAG, "onRemoteRemoved: stream doesn't exist, " Log.d( + "aborting remote removed for token:" + token.toString()); TAG, "onRemoteRemoved: stream doesn't exist, " + "aborting remote removed for token:" + token.toString()); return; return; } } stream = mRemoteStreams.get(token); stream = mRemoteStreams.get(token); Loading @@ -1441,7 +1429,6 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa } } mCallbacks.onStateChanged(mState); mCallbacks.onStateChanged(mState); } } } public void setStreamVolume(int stream, int level) { public void setStreamVolume(int stream, int level) { final Token token = findToken(stream); final Token token = findToken(stream); Loading @@ -1449,40 +1436,8 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa Log.w(TAG, "setStreamVolume: No token found for stream: " + stream); Log.w(TAG, "setStreamVolume: No token found for stream: " + stream); return; return; } } if (showForSession(token)) { mMediaSessions.setVolume(token, level); mMediaSessions.setVolume(token, level); } } } private boolean showForSession(Token token) { if (mVolumeAdjustmentForRemoteGroupSessions) { if (DEBUG) { Log.d(TAG, "Volume adjustment for remote group sessions allowed," + " showForSession: true"); } return true; } MediaController ctr = new MediaController(mContext, token); String packageName = ctr.getPackageName(); List<RoutingSessionInfo> sessions = mRouter2Manager.getRoutingSessions(packageName); if (DEBUG) { Log.d(TAG, "Found " + sessions.size() + " routing sessions for package name " + packageName); } for (RoutingSessionInfo session : sessions) { if (DEBUG) { Log.d(TAG, "Found routingSessionInfo: " + session); } if (!session.isSystemSession() && session.getVolumeHandling() != MediaRoute2Info.PLAYBACK_VOLUME_FIXED) { return true; } } Log.d(TAG, "No routing session for " + packageName); return false; } private Token findToken(int stream) { private Token findToken(int stream) { synchronized (mRemoteStreams) { synchronized (mRemoteStreams) { Loading