diff options
| author | 2022-09-24 04:29:47 +0000 | |
|---|---|---|
| committer | 2022-09-24 04:29:47 +0000 | |
| commit | 89bef8399b7914cfdfb8bb92383c6be907b4b1ce (patch) | |
| tree | 6eca41fa9d848e16431ff194f187325c5867bb41 | |
| parent | 8d7109f665517468ce4dc5d2b914400fb7d32ef2 (diff) | |
| parent | 03daf8f393e3be24442f99a54cab72a24dc81946 (diff) | |
Merge "[Output Switcher] Adjust check for advanced icon" into tm-qpr-dev
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); + } } |