Fix the gold highlight encircles the app badge in the bubble.
In regarding to this change Idbb747dd5a5a9f3e4f4d5ecdcefe080ed5df25bb
Details: Submitted this Change Ie899c44dfdbd81ad942c050ccf5ce36561856078 and it broke because entry variable not found.
Cause: Change I1180954a76bee9782df46de0f202c614f05d560f removed entry. Not sure how this change was not affected even though it was submitted later.
Solution: Anyway, Took those change and applied my fix by adding the separate field in the Bubble.java
Bug: 158310637
Test: Manual test on device
Change-Id: I5204a85fe4bf573576e8d3272d005a85450dce72
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java b/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java
index 6377b4f..6bb8f68 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java
@@ -77,6 +77,7 @@
private BubbleViewInfoTask mInflationTask;
private boolean mInflateSynchronously;
private boolean mPendingIntentCanceled;
+ private boolean mIsImportantConversation;
/**
* Presentational info about the flyout.
@@ -362,6 +363,8 @@
mIntent = entry.getBubbleMetadata().getIntent();
mDeleteIntent = entry.getBubbleMetadata().getDeleteIntent();
}
+ mIsImportantConversation =
+ entry.getChannel() == null ? false : entry.getChannel().isImportantConversation();
}
@Nullable
@@ -432,6 +435,13 @@
}
/**
+ * Whether this notification conversation is important.
+ */
+ boolean isImportantConversation() {
+ return mIsImportantConversation;
+ }
+
+ /**
* Sets whether this notification should be suppressed in the shade.
*/
void setSuppressNotification(boolean suppressNotification) {
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleIconFactory.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleIconFactory.java
index a799f2d7..40a93e1 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleIconFactory.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleIconFactory.java
@@ -23,6 +23,8 @@
import android.content.pm.ShortcutInfo;
import android.graphics.Bitmap;
import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
@@ -76,15 +78,36 @@
* Returns a {@link BitmapInfo} for the app-badge that is shown on top of each bubble. This
* will include the workprofile indicator on the badge if appropriate.
*/
- BitmapInfo getBadgeBitmap(Drawable userBadgedAppIcon) {
+ BitmapInfo getBadgeBitmap(Drawable userBadgedAppIcon, boolean isImportantConversation) {
Bitmap userBadgedBitmap = createIconBitmap(
userBadgedAppIcon, 1f, getBadgeSize());
-
- Canvas c = new Canvas();
ShadowGenerator shadowGenerator = new ShadowGenerator(getBadgeSize());
- c.setBitmap(userBadgedBitmap);
- shadowGenerator.recreateIcon(Bitmap.createBitmap(userBadgedBitmap), c);
- return createIconBitmap(userBadgedBitmap);
+ if (!isImportantConversation) {
+ Canvas c = new Canvas();
+ c.setBitmap(userBadgedBitmap);
+ shadowGenerator.recreateIcon(Bitmap.createBitmap(userBadgedBitmap), c);
+ return createIconBitmap(userBadgedBitmap);
+ } else {
+ float ringStrokeWidth = mContext.getResources().getDimensionPixelSize(
+ com.android.internal.R.dimen.importance_ring_stroke_width);
+ int importantConversationColor = mContext.getResources().getColor(
+ com.android.settingslib.R.color.important_conversation, null);
+ Bitmap badgeAndRing = Bitmap.createBitmap(userBadgedBitmap.getWidth(),
+ userBadgedBitmap.getHeight(), userBadgedBitmap.getConfig());
+ Canvas c = new Canvas(badgeAndRing);
+ Rect dest = new Rect((int) ringStrokeWidth, (int) ringStrokeWidth,
+ c.getHeight() - (int) ringStrokeWidth, c.getWidth() - (int) ringStrokeWidth);
+ c.drawBitmap(userBadgedBitmap, null, dest, null);
+ Paint ringPaint = new Paint();
+ ringPaint.setStyle(Paint.Style.STROKE);
+ ringPaint.setColor(importantConversationColor);
+ ringPaint.setAntiAlias(true);
+ ringPaint.setStrokeWidth(ringStrokeWidth);
+ c.drawCircle(c.getWidth() / 2, c.getHeight() / 2, c.getWidth() / 2 - ringStrokeWidth,
+ ringPaint);
+ shadowGenerator.recreateIcon(Bitmap.createBitmap(badgeAndRing), c);
+ return createIconBitmap(badgeAndRing);
+ }
}
/**
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleViewInfoTask.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleViewInfoTask.java
index 3e4ff52..1929fc4 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleViewInfoTask.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleViewInfoTask.java
@@ -176,7 +176,8 @@
bubbleDrawable = appIcon;
}
- BitmapInfo badgeBitmapInfo = iconFactory.getBadgeBitmap(badgedIcon);
+ BitmapInfo badgeBitmapInfo = iconFactory.getBadgeBitmap(badgedIcon,
+ b.isImportantConversation());
info.badgedAppIcon = badgedIcon;
info.badgedBubbleImage = iconFactory.getBubbleBitmap(bubbleDrawable,
badgeBitmapInfo).icon;