From f7e1ea043f7f5a7e953fa2d8962a09c85f01e690 Mon Sep 17 00:00:00 2001 From: shaoweishen Date: Tue, 8 Feb 2022 13:19:33 +0000 Subject: [PATCH] [Output Switcher] Add new check for BT device and apply the ranking Add new support for checking if BT device is MutingExpected device. If yes, sort it as the first in the list as other Bt devices. Bug: 190235178 Test: verified on devices Change-Id: I6dd8190ec2bbca1a069e8106f6eb1b3566791309 --- .../settingslib/media/BluetoothMediaDevice.java | 9 +++++++++ .../android/settingslib/media/MediaDevice.java | 15 +++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java index 360361ba0104d..dd7db21f765cd 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java @@ -19,6 +19,7 @@ import android.bluetooth.BluetoothClass; import android.bluetooth.BluetoothDevice; import android.content.Context; import android.graphics.drawable.Drawable; +import android.media.AudioManager; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; @@ -34,11 +35,13 @@ public class BluetoothMediaDevice extends MediaDevice { private static final String TAG = "BluetoothMediaDevice"; private CachedBluetoothDevice mCachedDevice; + private final AudioManager mAudioManager; BluetoothMediaDevice(Context context, CachedBluetoothDevice device, MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName) { super(context, routerManager, info, packageName); mCachedDevice = device; + mAudioManager = context.getSystemService(AudioManager.class); initDeviceRecord(); } @@ -97,6 +100,12 @@ public class BluetoothMediaDevice extends MediaDevice { mCachedDevice.getDevice(), BluetoothDevice.METADATA_IS_UNTETHERED_HEADSET); } + @Override + public boolean isMutingExpectedDevice() { + return mAudioManager.getMutingExpectedDevice() != null && mCachedDevice.getAddress().equals( + mAudioManager.getMutingExpectedDevice().getAddress()); + } + @Override public boolean isConnected() { return mCachedDevice.getBondState() == BluetoothDevice.BOND_BONDED diff --git a/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java index 970abff3054b9..c7599623c465f 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java @@ -320,6 +320,13 @@ public abstract class MediaDevice implements Comparable { } if (mType == another.mType) { + // Check device is muting expected device + if (isMutingExpectedDevice()) { + return -1; + } else if (another.isMutingExpectedDevice()) { + return 1; + } + // Check fast pair device if (isFastPairDevice()) { return -1; @@ -392,6 +399,14 @@ public abstract class MediaDevice implements Comparable { return false; } + /** + * Check if it is muting expected device + * @return {@code true} if it is muting expected device, otherwise return {@code false} + */ + protected boolean isMutingExpectedDevice() { + return false; + } + @Override public boolean equals(Object obj) { if (!(obj instanceof MediaDevice)) {