Fix pixel buds icon is empty in output switcher
MediaDevice will set a color filter in the bluetooth device icon if the bluetooth device is not a fist pair device. But if apps didn't have permission to get a first pair device icon, MediaDevice will return a default bluetooth icon. In this case MediaDevice will not set the color filter in the icon then it causes the icon to become empty. This CL will use the drawable type to set the color filter instead of checking whether it is a first pair device. Bug: 174279607 Test: make -j42 RunSettingsRoboTests Change-Id: Ic5c348900db3e79e669173ec4ceeaec4d6500e5f
This commit is contained in:
@@ -18,6 +18,7 @@ package com.android.settingslib.media;
|
||||
import android.bluetooth.BluetoothClass;
|
||||
import android.bluetooth.BluetoothDevice;
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.media.MediaRoute2Info;
|
||||
import android.media.MediaRouter2Manager;
|
||||
@@ -56,8 +57,9 @@ public class BluetoothMediaDevice extends MediaDevice {
|
||||
|
||||
@Override
|
||||
public Drawable getIcon() {
|
||||
final Drawable drawable = getIconWithoutBackground();
|
||||
if (!isFastPairDevice()) {
|
||||
final Drawable drawable =
|
||||
BluetoothUtils.getBtDrawableWithDescription(mContext, mCachedDevice).first;
|
||||
if (!(drawable instanceof BitmapDrawable)) {
|
||||
setColorFilter(drawable);
|
||||
}
|
||||
return BluetoothUtils.buildAdvancedDrawable(mContext, drawable);
|
||||
@@ -65,9 +67,7 @@ public class BluetoothMediaDevice extends MediaDevice {
|
||||
|
||||
@Override
|
||||
public Drawable getIconWithoutBackground() {
|
||||
return isFastPairDevice()
|
||||
? BluetoothUtils.getBtDrawableWithDescription(mContext, mCachedDevice).first
|
||||
: mContext.getDrawable(R.drawable.ic_headphone);
|
||||
return BluetoothUtils.getBtClassDrawableWithDescription(mContext, mCachedDevice).first;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -24,6 +24,7 @@ import static org.mockito.Mockito.when;
|
||||
import android.bluetooth.BluetoothDevice;
|
||||
import android.bluetooth.BluetoothProfile;
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
|
||||
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
||||
|
||||
@@ -96,4 +97,17 @@ public class BluetoothMediaDeviceTest {
|
||||
|
||||
assertThat(mBluetoothMediaDevice.isFastPairDevice()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getIcon_isNotFastPairDevice_drawableTypeIsNotBitmapDrawable() {
|
||||
final BluetoothDevice bluetoothDevice = mock(BluetoothDevice.class);
|
||||
when(mDevice.getDevice()).thenReturn(bluetoothDevice);
|
||||
|
||||
final String value = "False";
|
||||
final byte[] bytes = value.getBytes();
|
||||
when(bluetoothDevice.getMetadata(BluetoothDevice.METADATA_IS_UNTETHERED_HEADSET))
|
||||
.thenReturn(bytes);
|
||||
|
||||
assertThat(mBluetoothMediaDevice.getIcon() instanceof BitmapDrawable).isFalse();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user