[Output Switcher] Adjust check for advanced icon
Since advanced icon should be only applied on untethered device, add new method for check this. isAdvancedDetailsHeader will also return true if device type is watch or default, which should not use advanced icon. Bug: 246235835 Test: make RunSettingsLibRoboTests -j40 Change-Id: Ic7d52e78dc790b016a090f8e26c8444152294aed
This commit is contained in:
committed by
Shaowei Shen
parent
b2689e0350
commit
03daf8f393
@@ -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
|
||||
@@ -259,6 +255,47 @@ public class BluetoothUtils {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user