summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2022-09-24 04:29:47 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-09-24 04:29:47 +0000
commit89bef8399b7914cfdfb8bb92383c6be907b4b1ce (patch)
tree6eca41fa9d848e16431ff194f187325c5867bb41
parent8d7109f665517468ce4dc5d2b914400fb7d32ef2 (diff)
parent03daf8f393e3be24442f99a54cab72a24dc81946 (diff)
Merge "[Output Switcher] Adjust check for advanced icon" into tm-qpr-dev
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java49
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java4
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothUtilsTest.java41
3 files changed, 86 insertions, 8 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java
index fea7475fc087..5c796af84fef 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java
@@ -237,14 +237,10 @@ public class BluetoothUtils {
* @return true if it supports advanced metadata, false otherwise.
*/
public static boolean isAdvancedDetailsHeader(@NonNull BluetoothDevice bluetoothDevice) {
- if (!DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SETTINGS_UI, BT_ADVANCED_HEADER_ENABLED,
- true)) {
- Log.d(TAG, "isAdvancedDetailsHeader: advancedEnabled is false");
+ if (!isAdvancedHeaderEnabled()) {
return false;
}
- // The metadata is for Android R
- if (getBooleanMetaData(bluetoothDevice, BluetoothDevice.METADATA_IS_UNTETHERED_HEADSET)) {
- Log.d(TAG, "isAdvancedDetailsHeader: untetheredHeadset is true");
+ if (isUntetheredHeadset(bluetoothDevice)) {
return true;
}
// The metadata is for Android S
@@ -260,6 +256,47 @@ public class BluetoothUtils {
}
/**
+ * Check if the Bluetooth device is supports advanced metadata and an untethered headset
+ *
+ * @param bluetoothDevice the BluetoothDevice to get metadata
+ * @return true if it supports advanced metadata and an untethered headset, false otherwise.
+ */
+ public static boolean isAdvancedUntetheredDevice(@NonNull BluetoothDevice bluetoothDevice) {
+ if (!isAdvancedHeaderEnabled()) {
+ return false;
+ }
+ if (isUntetheredHeadset(bluetoothDevice)) {
+ return true;
+ }
+ // The metadata is for Android S
+ String deviceType = getStringMetaData(bluetoothDevice,
+ BluetoothDevice.METADATA_DEVICE_TYPE);
+ if (TextUtils.equals(deviceType, BluetoothDevice.DEVICE_TYPE_UNTETHERED_HEADSET)) {
+ Log.d(TAG, "isAdvancedUntetheredDevice: is untethered device ");
+ return true;
+ }
+ return false;
+ }
+
+ private static boolean isAdvancedHeaderEnabled() {
+ if (!DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SETTINGS_UI, BT_ADVANCED_HEADER_ENABLED,
+ true)) {
+ Log.d(TAG, "isAdvancedDetailsHeader: advancedEnabled is false");
+ return false;
+ }
+ return true;
+ }
+
+ private static boolean isUntetheredHeadset(@NonNull BluetoothDevice bluetoothDevice) {
+ // The metadata is for Android R
+ if (getBooleanMetaData(bluetoothDevice, BluetoothDevice.METADATA_IS_UNTETHERED_HEADSET)) {
+ Log.d(TAG, "isAdvancedDetailsHeader: untetheredHeadset is true");
+ return true;
+ }
+ return false;
+ }
+
+ /**
* Create an Icon pointing to a drawable.
*/
public static IconCompat createIconWithDrawable(Drawable drawable) {
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java
index 1be9d76cf3eb..39034047d6eb 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java
@@ -59,14 +59,14 @@ public class BluetoothMediaDevice extends MediaDevice {
@Override
public Drawable getIcon() {
- return BluetoothUtils.isAdvancedDetailsHeader(mCachedDevice.getDevice())
+ return BluetoothUtils.isAdvancedUntetheredDevice(mCachedDevice.getDevice())
? mContext.getDrawable(R.drawable.ic_earbuds_advanced)
: BluetoothUtils.getBtClassDrawableWithDescription(mContext, mCachedDevice).first;
}
@Override
public Drawable getIconWithoutBackground() {
- return BluetoothUtils.isAdvancedDetailsHeader(mCachedDevice.getDevice())
+ return BluetoothUtils.isAdvancedUntetheredDevice(mCachedDevice.getDevice())
? mContext.getDrawable(R.drawable.ic_earbuds_advanced)
: BluetoothUtils.getBtClassDrawableWithDescription(mContext, mCachedDevice).first;
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothUtilsTest.java
index 1c0ea1a1f4b0..ca14573c95e1 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothUtilsTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothUtilsTest.java
@@ -205,4 +205,45 @@ public class BluetoothUtilsTest {
public void isAdvancedDetailsHeader_noMetadata_returnFalse() {
assertThat(BluetoothUtils.isAdvancedDetailsHeader(mBluetoothDevice)).isEqualTo(false);
}
+
+ @Test
+ public void isAdvancedUntetheredDevice_untetheredHeadset_returnTrue() {
+ when(mBluetoothDevice.getMetadata(
+ BluetoothDevice.METADATA_IS_UNTETHERED_HEADSET)).thenReturn(
+ BOOL_METADATA.getBytes());
+
+ assertThat(BluetoothUtils.isAdvancedUntetheredDevice(mBluetoothDevice)).isEqualTo(true);
+ }
+
+ @Test
+ public void isAdvancedUntetheredDevice_deviceTypeUntetheredHeadset_returnTrue() {
+ when(mBluetoothDevice.getMetadata(
+ BluetoothDevice.METADATA_DEVICE_TYPE)).thenReturn(
+ BluetoothDevice.DEVICE_TYPE_UNTETHERED_HEADSET.getBytes());
+
+ assertThat(BluetoothUtils.isAdvancedUntetheredDevice(mBluetoothDevice)).isEqualTo(true);
+ }
+
+ @Test
+ public void isAdvancedUntetheredDevice_deviceTypeWatch_returnFalse() {
+ when(mBluetoothDevice.getMetadata(
+ BluetoothDevice.METADATA_DEVICE_TYPE)).thenReturn(
+ BluetoothDevice.DEVICE_TYPE_WATCH.getBytes());
+
+ assertThat(BluetoothUtils.isAdvancedUntetheredDevice(mBluetoothDevice)).isEqualTo(false);
+ }
+
+ @Test
+ public void isAdvancedUntetheredDevice_deviceTypeDefault_returnFalse() {
+ when(mBluetoothDevice.getMetadata(
+ BluetoothDevice.METADATA_DEVICE_TYPE)).thenReturn(
+ BluetoothDevice.DEVICE_TYPE_DEFAULT.getBytes());
+
+ assertThat(BluetoothUtils.isAdvancedUntetheredDevice(mBluetoothDevice)).isEqualTo(false);
+ }
+
+ @Test
+ public void isAdvancedUntetheredDevice_noMetadata_returnFalse() {
+ assertThat(BluetoothUtils.isAdvancedUntetheredDevice(mBluetoothDevice)).isEqualTo(false);
+ }
}