diff --git a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java index 6cf53d0bcc750..4d10f38a9a3ad 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java @@ -15,6 +15,7 @@ */ package com.android.settingslib.media; +import static android.media.MediaRoute2Info.FEATURE_REMOTE_GROUP_PLAYBACK; import static android.media.MediaRoute2Info.TYPE_BLUETOOTH_A2DP; import static android.media.MediaRoute2Info.TYPE_BUILTIN_SPEAKER; import static android.media.MediaRoute2Info.TYPE_DOCK; @@ -31,6 +32,7 @@ import static android.media.MediaRoute2Info.TYPE_WIRED_HEADPHONES; import static android.media.MediaRoute2Info.TYPE_WIRED_HEADSET; import static android.media.MediaRoute2ProviderService.REASON_UNKNOWN_ERROR; +import android.annotation.TargetApi; import android.app.Notification; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; @@ -38,6 +40,7 @@ import android.content.Context; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; import android.media.RoutingSessionInfo; +import android.os.Build; import android.text.TextUtils; import android.util.Log; @@ -391,6 +394,38 @@ public class InfoMediaManager extends MediaManager { return shouldDisableMediaOutput; } + @TargetApi(Build.VERSION_CODES.R) + boolean shouldEnableVolumeSeekBar(RoutingSessionInfo sessionInfo) { + if (sessionInfo == null) { + Log.w(TAG, "shouldEnableVolumeSeekBar() package name is null or empty!"); + return false; + } + final List mediaRoute2Infos = + mRouterManager.getSelectedRoutes(sessionInfo); + // More than one selected route + if (mediaRoute2Infos.size() > 1) { + if (DEBUG) { + Log.d(TAG, "shouldEnableVolumeSeekBar() package name : " + + sessionInfo.getClientPackageName() + + ", mediaRoute2Infos.size() " + mediaRoute2Infos.size()); + } + return false; + } + // Route contains group feature + for (MediaRoute2Info mediaRoute2Info : mediaRoute2Infos) { + final List features = mediaRoute2Info.getFeatures(); + if (features.contains(FEATURE_REMOTE_GROUP_PLAYBACK)) { + if (DEBUG) { + Log.d(TAG, "shouldEnableVolumeSeekBar() package name : " + + mediaRoute2Info.getClientPackageName() + + "contain group playback "); + } + return false; + } + } + return true; + } + private void refreshDevices() { mMediaDevices.clear(); mCurrentConnectedDevice = null; diff --git a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java index 1f3e0e9fe0384..a8da2c0ba269a 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java @@ -408,6 +408,13 @@ public class LocalMediaManager implements BluetoothCallback { return mInfoMediaManager.shouldDisableMediaOutput(packageName); } + /** + * Returns {@code true} if needed to enable volume seekbar, otherwise returns {@code false}. + */ + public boolean shouldEnableVolumeSeekBar(RoutingSessionInfo sessionInfo) { + return mInfoMediaManager.shouldEnableVolumeSeekBar(sessionInfo); + } + @VisibleForTesting MediaDevice updateCurrentConnectedDevice() { MediaDevice connectedDevice = null;