Set accent color to COLOR_NOT_TINTED
Bug: 128570540
Test: Test: make -j42 RunSettingsRoboTests
Change-Id: I483542156bf6cd24ed7080fed45e9f8e4d87a079
diff --git a/src/com/android/settings/media/MediaOutputSlice.java b/src/com/android/settings/media/MediaOutputSlice.java
index e76bc88..53324e9 100644
--- a/src/com/android/settings/media/MediaOutputSlice.java
+++ b/src/com/android/settings/media/MediaOutputSlice.java
@@ -18,11 +18,11 @@
import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_SLICE_URI;
-import android.annotation.ColorInt;
import android.app.PendingIntent;
import android.bluetooth.BluetoothAdapter;
import android.content.Context;
import android.content.Intent;
+import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.text.TextUtils;
import android.util.Log;
@@ -82,10 +82,9 @@
}
final List<MediaDevice> devices = getMediaDevices();
- @ColorInt final int color = Utils.getColorAccentDefaultColor(mContext);
final MediaDevice connectedDevice = getWorker().getCurrentConnectedMediaDevice();
- final ListBuilder listBuilder = buildActiveDeviceHeader(color, connectedDevice);
+ final ListBuilder listBuilder = buildActiveDeviceHeader(connectedDevice);
for (MediaDevice device : devices) {
if (!TextUtils.equals(connectedDevice.getId(), device.getId())) {
@@ -96,9 +95,9 @@
return listBuilder.build();
}
- private ListBuilder buildActiveDeviceHeader(@ColorInt int color, MediaDevice device) {
+ private ListBuilder buildActiveDeviceHeader(MediaDevice device) {
final String title = device.getName();
- final IconCompat icon = IconCompat.createWithResource(mContext, device.getIcon());
+ final IconCompat icon = getDeviceIconCompat(device);
final PendingIntent broadcastAction =
getBroadcastIntent(mContext, device.getId(), device.hashCode());
@@ -107,7 +106,7 @@
final ListBuilder listBuilder = new ListBuilder(mContext, MEDIA_OUTPUT_SLICE_URI,
ListBuilder.INFINITY)
- .setAccentColor(color)
+ .setAccentColor(COLOR_NOT_TINTED)
.addRow(new ListBuilder.RowBuilder()
.setTitleItem(icon, ListBuilder.ICON_IMAGE)
.setTitle(title)
@@ -117,6 +116,17 @@
return listBuilder;
}
+ private IconCompat getDeviceIconCompat(MediaDevice device) {
+ Drawable drawable = device.getIcon();
+ if (drawable == null) {
+ Log.d(TAG, "getDeviceIconCompat() device : " + device.getName() + ", drawable is null");
+ // Use default Bluetooth device icon to handle getIcon() is null case.
+ drawable = mContext.getDrawable(com.android.internal.R.drawable.ic_bt_headphones_a2dp);
+ }
+
+ return Utils.createIconWithDrawable(drawable);
+ }
+
private MediaDeviceUpdateWorker getWorker() {
if (mWorker == null) {
mWorker = (MediaDeviceUpdateWorker) SliceBackgroundWorker.getInstance(getUri());
@@ -136,7 +146,8 @@
final String title = device.getName();
final PendingIntent broadcastAction =
getBroadcastIntent(mContext, device.getId(), device.hashCode());
- final IconCompat deviceIcon = IconCompat.createWithResource(mContext, device.getIcon());
+ final IconCompat deviceIcon = getDeviceIconCompat(device);
+
final ListBuilder.RowBuilder rowBuilder = new ListBuilder.RowBuilder()
.setTitleItem(deviceIcon, ListBuilder.ICON_IMAGE)
.setPrimaryAction(SliceAction.create(broadcastAction, deviceIcon,
diff --git a/tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java b/tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java
index d26a458..205f295 100644
--- a/tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java
+++ b/tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java
@@ -30,6 +30,7 @@
import android.bluetooth.BluetoothAdapter;
import android.content.Context;
import android.content.Intent;
+import android.graphics.drawable.Drawable;
import androidx.slice.Slice;
import androidx.slice.SliceMetadata;
@@ -66,6 +67,8 @@
@Mock
private LocalMediaManager mLocalMediaManager;
+ @Mock
+ private Drawable mTestDrawable;
private final List<MediaDevice> mDevices = new ArrayList<>();
@@ -105,7 +108,7 @@
mDevices.clear();
final MediaDevice device = mock(MediaDevice.class);
when(device.getName()).thenReturn(TEST_DEVICE_1_NAME);
- when(device.getIcon()).thenReturn(TEST_DEVICE_1_ICON);
+ when(device.getIcon()).thenReturn(mTestDrawable);
when(mLocalMediaManager.getCurrentConnectedDevice()).thenReturn(device);
final Slice mediaSlice = mMediaOutputSlice.getSlice();