bt: Use group id to select color for icon

This reduces icon color flickering when disconnecting one of the devices
from a device group. Normally we use device address to pick a color but
in case we have a group id we should use it instead, so that the color
does not change when one of the devices disconnects.

Bug: 269067986
Test: manual
Tag: #feature

Change-Id: If72187d050e8ea531b8f2c39e22f3faf1ec14f7b
Merged-In: If72187d050e8ea531b8f2c39e22f3faf1ec14f7b
This commit is contained in:
Michał Narajowski
2023-04-25 08:01:18 +00:00
committed by Jack He
parent 6aecb91bd1
commit 84ddae46ef
2 changed files with 11 additions and 4 deletions

View File

@@ -6,6 +6,7 @@ import android.annotation.SuppressLint;
import android.bluetooth.BluetoothClass;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothProfile;
import android.bluetooth.BluetoothCsipSetCoordinator;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
@@ -174,14 +175,21 @@ public class BluetoothUtils {
resources, ((BitmapDrawable) pair.first).getBitmap()), pair.second);
}
int hashCode;
if ((cachedDevice.getGroupId() != BluetoothCsipSetCoordinator.GROUP_ID_INVALID)) {
hashCode = new Integer(cachedDevice.getGroupId()).hashCode();
} else {
hashCode = cachedDevice.getAddress().hashCode();
}
return new Pair<>(buildBtRainbowDrawable(context,
pair.first, cachedDevice.getAddress().hashCode()), pair.second);
pair.first, hashCode), pair.second);
}
/**
* Build Bluetooth device icon with rainbow
*/
public static Drawable buildBtRainbowDrawable(Context context, Drawable drawable,
private static Drawable buildBtRainbowDrawable(Context context, Drawable drawable,
int hashCode) {
final Resources resources = context.getResources();

View File

@@ -1548,8 +1548,7 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
refresh();
}
return new Pair<>(BluetoothUtils.buildBtRainbowDrawable(
mContext, pair.first, getAddress().hashCode()), pair.second);
return BluetoothUtils.getBtRainbowDrawableWithDescription(mContext, this);
}
void releaseLruCache() {