Loading packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +26 −1 Original line number Diff line number Diff line Loading @@ -15,13 +15,13 @@ */ package com.android.settingslib.media; import static android.media.MediaRoute2Info.TYPE_BLE_HEADSET; import static android.media.MediaRoute2Info.TYPE_BLUETOOTH_A2DP; import static android.media.MediaRoute2Info.TYPE_BUILTIN_SPEAKER; import static android.media.MediaRoute2Info.TYPE_DOCK; import static android.media.MediaRoute2Info.TYPE_GROUP; import static android.media.MediaRoute2Info.TYPE_HDMI; import static android.media.MediaRoute2Info.TYPE_HEARING_AID; import static android.media.MediaRoute2Info.TYPE_BLE_HEADSET; import static android.media.MediaRoute2Info.TYPE_REMOTE_SPEAKER; import static android.media.MediaRoute2Info.TYPE_REMOTE_TV; import static android.media.MediaRoute2Info.TYPE_UNKNOWN; Loading Loading @@ -163,6 +163,31 @@ public class InfoMediaManager extends MediaManager { return sessionInfos.get(sessionInfos.size() - 1); } boolean isRoutingSessionAvailableForVolumeControl() { if (mVolumeAdjustmentForRemoteGroupSessions) { return true; } List<RoutingSessionInfo> sessions = mRouterManager.getRoutingSessions(mPackageName); boolean foundNonSystemSession = false; boolean isGroup = false; for (RoutingSessionInfo session : sessions) { if (!session.isSystemSession()) { foundNonSystemSession = true; int selectedRouteCount = session.getSelectedRoutes().size(); if (selectedRouteCount > 1) { isGroup = true; break; } } } if (!foundNonSystemSession) { Log.d(TAG, "No routing session for " + mPackageName); return false; } return !isGroup; } /** * Remove a {@code device} from current media. * Loading packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java +9 −1 Original line number Diff line number Diff line Loading @@ -37,9 +37,9 @@ import com.android.settingslib.bluetooth.BluetoothCallback; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager; import com.android.settingslib.bluetooth.HearingAidProfile; import com.android.settingslib.bluetooth.LeAudioProfile; import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.settingslib.bluetooth.LocalBluetoothProfile; import com.android.settingslib.bluetooth.LeAudioProfile; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; Loading Loading @@ -197,6 +197,14 @@ public class LocalMediaManager implements BluetoothCallback { } } /** * Returns if the media session is available for volume control. * @return True if this media session is available for colume control, false otherwise. */ public boolean isMediaSessionAvailableForVolumeControl() { return mInfoMediaManager.isRoutingSessionAvailableForVolumeControl(); } /** * Start scan connected MediaDevice */ Loading packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java +8 −6 Original line number Diff line number Diff line Loading @@ -92,7 +92,6 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback { private final DialogLaunchAnimator mDialogLaunchAnimator; private final List<MediaDevice> mGroupMediaDevices = new CopyOnWriteArrayList<>(); private final boolean mAboveStatusbar; private final boolean mVolumeAdjustmentForRemoteGroupSessions; private final CommonNotifCollection mNotifCollection; @VisibleForTesting final List<MediaDevice> mMediaDevices = new CopyOnWriteArrayList<>(); Loading Loading @@ -131,8 +130,6 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback { mMetricLogger = new MediaOutputMetricLogger(mContext, mPackageName); mUiEventLogger = uiEventLogger; mDialogLaunchAnimator = dialogLaunchAnimator; mVolumeAdjustmentForRemoteGroupSessions = mContext.getResources().getBoolean( com.android.internal.R.bool.config_volumeAdjustmentForRemoteGroupSessions); mColorActiveItem = Utils.getColorStateListDefaultColor(mContext, R.color.media_dialog_active_item_main_content); mColorInactiveItem = Utils.getColorStateListDefaultColor(mContext, Loading Loading @@ -621,10 +618,15 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback { || features.contains(MediaRoute2Info.FEATURE_REMOTE_GROUP_PLAYBACK)); } private boolean isPlayBackInfoLocal() { return mMediaController.getPlaybackInfo() != null && mMediaController.getPlaybackInfo().getPlaybackType() == MediaController.PlaybackInfo.PLAYBACK_TYPE_LOCAL; } boolean isVolumeControlEnabled(@NonNull MediaDevice device) { // TODO(b/202500642): Also enable volume control for remote non-group sessions. return !isActiveRemoteDevice(device) || mVolumeAdjustmentForRemoteGroupSessions; return isPlayBackInfoLocal() || mLocalMediaManager.isMediaSessionAvailableForVolumeControl(); } private final MediaController.Callback mCb = new MediaController.Callback() { Loading Loading
packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +26 −1 Original line number Diff line number Diff line Loading @@ -15,13 +15,13 @@ */ package com.android.settingslib.media; import static android.media.MediaRoute2Info.TYPE_BLE_HEADSET; import static android.media.MediaRoute2Info.TYPE_BLUETOOTH_A2DP; import static android.media.MediaRoute2Info.TYPE_BUILTIN_SPEAKER; import static android.media.MediaRoute2Info.TYPE_DOCK; import static android.media.MediaRoute2Info.TYPE_GROUP; import static android.media.MediaRoute2Info.TYPE_HDMI; import static android.media.MediaRoute2Info.TYPE_HEARING_AID; import static android.media.MediaRoute2Info.TYPE_BLE_HEADSET; import static android.media.MediaRoute2Info.TYPE_REMOTE_SPEAKER; import static android.media.MediaRoute2Info.TYPE_REMOTE_TV; import static android.media.MediaRoute2Info.TYPE_UNKNOWN; Loading Loading @@ -163,6 +163,31 @@ public class InfoMediaManager extends MediaManager { return sessionInfos.get(sessionInfos.size() - 1); } boolean isRoutingSessionAvailableForVolumeControl() { if (mVolumeAdjustmentForRemoteGroupSessions) { return true; } List<RoutingSessionInfo> sessions = mRouterManager.getRoutingSessions(mPackageName); boolean foundNonSystemSession = false; boolean isGroup = false; for (RoutingSessionInfo session : sessions) { if (!session.isSystemSession()) { foundNonSystemSession = true; int selectedRouteCount = session.getSelectedRoutes().size(); if (selectedRouteCount > 1) { isGroup = true; break; } } } if (!foundNonSystemSession) { Log.d(TAG, "No routing session for " + mPackageName); return false; } return !isGroup; } /** * Remove a {@code device} from current media. * Loading
packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java +9 −1 Original line number Diff line number Diff line Loading @@ -37,9 +37,9 @@ import com.android.settingslib.bluetooth.BluetoothCallback; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager; import com.android.settingslib.bluetooth.HearingAidProfile; import com.android.settingslib.bluetooth.LeAudioProfile; import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.settingslib.bluetooth.LocalBluetoothProfile; import com.android.settingslib.bluetooth.LeAudioProfile; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; Loading Loading @@ -197,6 +197,14 @@ public class LocalMediaManager implements BluetoothCallback { } } /** * Returns if the media session is available for volume control. * @return True if this media session is available for colume control, false otherwise. */ public boolean isMediaSessionAvailableForVolumeControl() { return mInfoMediaManager.isRoutingSessionAvailableForVolumeControl(); } /** * Start scan connected MediaDevice */ Loading
packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java +8 −6 Original line number Diff line number Diff line Loading @@ -92,7 +92,6 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback { private final DialogLaunchAnimator mDialogLaunchAnimator; private final List<MediaDevice> mGroupMediaDevices = new CopyOnWriteArrayList<>(); private final boolean mAboveStatusbar; private final boolean mVolumeAdjustmentForRemoteGroupSessions; private final CommonNotifCollection mNotifCollection; @VisibleForTesting final List<MediaDevice> mMediaDevices = new CopyOnWriteArrayList<>(); Loading Loading @@ -131,8 +130,6 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback { mMetricLogger = new MediaOutputMetricLogger(mContext, mPackageName); mUiEventLogger = uiEventLogger; mDialogLaunchAnimator = dialogLaunchAnimator; mVolumeAdjustmentForRemoteGroupSessions = mContext.getResources().getBoolean( com.android.internal.R.bool.config_volumeAdjustmentForRemoteGroupSessions); mColorActiveItem = Utils.getColorStateListDefaultColor(mContext, R.color.media_dialog_active_item_main_content); mColorInactiveItem = Utils.getColorStateListDefaultColor(mContext, Loading Loading @@ -621,10 +618,15 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback { || features.contains(MediaRoute2Info.FEATURE_REMOTE_GROUP_PLAYBACK)); } private boolean isPlayBackInfoLocal() { return mMediaController.getPlaybackInfo() != null && mMediaController.getPlaybackInfo().getPlaybackType() == MediaController.PlaybackInfo.PLAYBACK_TYPE_LOCAL; } boolean isVolumeControlEnabled(@NonNull MediaDevice device) { // TODO(b/202500642): Also enable volume control for remote non-group sessions. return !isActiveRemoteDevice(device) || mVolumeAdjustmentForRemoteGroupSessions; return isPlayBackInfoLocal() || mLocalMediaManager.isMediaSessionAvailableForVolumeControl(); } private final MediaController.Callback mCb = new MediaController.Callback() { Loading