diff options
| author | 2022-06-13 10:21:34 +0000 | |
|---|---|---|
| committer | 2022-06-13 10:21:34 +0000 | |
| commit | 53661edb7f7b39bfaa3ca449202d1e16dc83b11c (patch) | |
| tree | 94359aad246923bda62bacd4a60718d4fa5849cf | |
| parent | ccdf34d9f46ddc8633f43f39240e240e19376340 (diff) | |
| parent | 25639f1b6df352962d3c8f8e0f5d290e620afe74 (diff) | |
Merge "[Output Switcher] Disable volume control if route is volume_fixed" into tm-dev am: 25639f1b6d
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18756771
Change-Id: Ic11bc62236f85cdb873c1dc25b10232251a5d3d8
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
3 files changed, 38 insertions, 2 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java index c29d18872ad0..c829bc316246 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java @@ -33,6 +33,7 @@ import static android.media.MediaRoute2Info.TYPE_WIRED_HEADSET; import static com.android.settingslib.media.LocalMediaManager.MediaDeviceState.STATE_SELECTED; +import android.annotation.SuppressLint; import android.content.Context; import android.graphics.drawable.Drawable; import android.media.MediaRoute2Info; @@ -268,6 +269,20 @@ public abstract class MediaDevice implements Comparable<MediaDevice> { } /** + * Checks if route's volume is fixed, if true, we should disable volume control for the device. + * + * @return route for this device is fixed. + */ + @SuppressLint("NewApi") + public boolean isVolumeFixed() { + if (mRouteInfo == null) { + Log.w(TAG, "RouteInfo is empty, regarded as volume fixed."); + return true; + } + return mRouteInfo.getVolumeHandling() == MediaRoute2Info.PLAYBACK_VOLUME_FIXED; + } + + /** * Transfer MediaDevice for media * * @return result of transfer media diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java index e372be3d18fc..42e9af846322 100644 --- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java +++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java @@ -932,8 +932,9 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback, } boolean isVolumeControlEnabled(@NonNull MediaDevice device) { - return isPlayBackInfoLocal() - || device.getDeviceType() != MediaDevice.MediaDeviceType.TYPE_CAST_GROUP_DEVICE; + return (isPlayBackInfoLocal() + || device.getDeviceType() != MediaDevice.MediaDeviceType.TYPE_CAST_GROUP_DEVICE) + && !device.isVolumeFixed(); } @Override diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java index edc45ee46dc2..feed3347f3e2 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java @@ -571,4 +571,24 @@ public class MediaOutputControllerTest extends SysuiTestCase { assertThat(mMediaOutputController.getNotificationIcon()).isNull(); } + + @Test + public void isVolumeControlEnabled_isCastWithVolumeFixed_returnsFalse() { + when(mMediaDevice1.getDeviceType()).thenReturn( + MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE); + + when(mMediaDevice1.isVolumeFixed()).thenReturn(true); + + assertThat(mMediaOutputController.isVolumeControlEnabled(mMediaDevice1)).isFalse(); + } + + @Test + public void isVolumeControlEnabled_isCastWithVolumeNotFixed_returnsTrue() { + when(mMediaDevice1.getDeviceType()).thenReturn( + MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE); + + when(mMediaDevice1.isVolumeFixed()).thenReturn(false); + + assertThat(mMediaOutputController.isVolumeControlEnabled(mMediaDevice1)).isTrue(); + } } |