Merge "Use default color when artwork is too small" into rvc-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
6ae71ece49
@@ -70,6 +70,7 @@ private const val DEBUG = true
|
||||
private const val DEFAULT_LUMINOSITY = 0.25f
|
||||
private const val LUMINOSITY_THRESHOLD = 0.05f
|
||||
private const val SATURATION_MULTIPLIER = 0.8f
|
||||
const val DEFAULT_COLOR = Color.DKGRAY
|
||||
|
||||
private val LOADING = MediaData(-1, false, 0, null, null, null, null, null,
|
||||
emptyList(), emptyList(), "INVALID", null, null, null, true, null)
|
||||
@@ -380,7 +381,7 @@ class MediaDataManager(
|
||||
} else {
|
||||
null
|
||||
}
|
||||
val bgColor = artworkBitmap?.let { computeBackgroundColor(it) } ?: Color.DKGRAY
|
||||
val bgColor = artworkBitmap?.let { computeBackgroundColor(it) } ?: DEFAULT_COLOR
|
||||
|
||||
val mediaAction = getResumeMediaAction(resumeAction)
|
||||
foregroundExecutor.execute {
|
||||
@@ -559,12 +560,14 @@ class MediaDataManager(
|
||||
|
||||
private fun computeBackgroundColor(artworkBitmap: Bitmap?): Int {
|
||||
var color = Color.WHITE
|
||||
if (artworkBitmap != null) {
|
||||
// If we have art, get colors from that
|
||||
if (artworkBitmap != null && artworkBitmap.width > 1 && artworkBitmap.height > 1) {
|
||||
// If we have valid art, get colors from that
|
||||
val p = MediaNotificationProcessor.generateArtworkPaletteBuilder(artworkBitmap)
|
||||
.generate()
|
||||
val swatch = MediaNotificationProcessor.findBackgroundSwatch(p)
|
||||
color = swatch.rgb
|
||||
} else {
|
||||
return DEFAULT_COLOR
|
||||
}
|
||||
// Adapt background color, so it's always subdued and text is legible
|
||||
val tmpHsl = floatArrayOf(0f, 0f, 0f)
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.android.systemui.media
|
||||
|
||||
import android.app.Notification.MediaStyle
|
||||
import android.app.PendingIntent
|
||||
import android.graphics.Bitmap
|
||||
import android.media.MediaDescription
|
||||
import android.media.MediaMetadata
|
||||
import android.media.session.MediaController
|
||||
@@ -246,4 +247,26 @@ class MediaDataManagerTest : SysuiTestCase() {
|
||||
|
||||
verify(listener).onMediaDataRemoved(eq(KEY))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testBadArtwork_doesNotUse() {
|
||||
// WHEN notification has a too-small artwork
|
||||
val artwork = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)
|
||||
val notif = SbnBuilder().run {
|
||||
setPkg(PACKAGE_NAME)
|
||||
modifyNotification(context).also {
|
||||
it.setSmallIcon(android.R.drawable.ic_media_pause)
|
||||
it.setStyle(MediaStyle().apply { setMediaSession(session.sessionToken) })
|
||||
it.setLargeIcon(artwork)
|
||||
}
|
||||
build()
|
||||
}
|
||||
mediaDataManager.onNotificationAdded(KEY, notif)
|
||||
|
||||
// THEN it loads and uses the default background color
|
||||
assertThat(backgroundExecutor.runAllReady()).isEqualTo(1)
|
||||
assertThat(foregroundExecutor.runAllReady()).isEqualTo(1)
|
||||
verify(listener).onMediaDataLoaded(eq(KEY), eq(null), capture(mediaDataCaptor))
|
||||
assertThat(mediaDataCaptor.value!!.backgroundColor).isEqualTo(DEFAULT_COLOR)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user