summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Shaowei Shen <shaoweishen@google.com> 2022-06-13 10:21:34 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2022-06-13 10:21:34 +0000
commit53661edb7f7b39bfaa3ca449202d1e16dc83b11c (patch)
tree94359aad246923bda62bacd4a60718d4fa5849cf
parentccdf34d9f46ddc8633f43f39240e240e19376340 (diff)
parent25639f1b6df352962d3c8f8e0f5d290e620afe74 (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>
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java15
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java5
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/media/dialog/MediaOutputControllerTest.java20
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();
+ }
}