[Android] Use high resolution cone image as default cover art

Robert Stone git at videolan.org
Wed Oct 21 09:02:41 CEST 2020


vlc-android | branch: 3.3.x | Robert Stone <rhstone at gmail.com> | Wed Oct 14 22:50:24 2020 -0700| [922f8946ade4595b1982c7adcc4c129addbcbbb9] | committer: Nicolas Pomepuy

Use high resolution cone image as default cover art

Fixes #1510

(cherry picked from commit 9e7cedf904ce0ac21c2ee34a851719138edc4149)

> https://code.videolan.org/videolan/vlc-android/commit/922f8946ade4595b1982c7adcc4c129addbcbbb9
---

 .../vlc-android/src/org/videolan/vlc/PlaybackService.kt    |  2 ++
 .../src/org/videolan/vlc/gui/helpers/BitmapUtil.kt         | 14 ++++++++++----
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/application/vlc-android/src/org/videolan/vlc/PlaybackService.kt b/application/vlc-android/src/org/videolan/vlc/PlaybackService.kt
index 091423d5ae..327830c0bd 100644
--- a/application/vlc-android/src/org/videolan/vlc/PlaybackService.kt
+++ b/application/vlc-android/src/org/videolan/vlc/PlaybackService.kt
@@ -853,6 +853,8 @@ class PlaybackService : MediaBrowserServiceCompat(), LifecycleOwner {
                 if (cover?.config != null)
                 //In case of format not supported
                     bob.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, cover.copy(cover.config, false))
+                else
+                    bob.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, ctx.getBitmapFromDrawable(R.drawable.ic_no_media, 512, 512))
             }
             bob.putLong("shuffle", 1L)
             bob.putLong("repeat", repeatType.toLong())
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/helpers/BitmapUtil.kt b/application/vlc-android/src/org/videolan/vlc/gui/helpers/BitmapUtil.kt
index 8cb10bb10b..eb45f94165 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/helpers/BitmapUtil.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/helpers/BitmapUtil.kt
@@ -116,7 +116,7 @@ object BitmapUtil {
 
     }
 
-    fun getBitmapFromVectorDrawable(context: Context, @DrawableRes drawableId: Int): Bitmap? {
+    fun getBitmapFromVectorDrawable(context: Context, @DrawableRes drawableId: Int, width: Int = -1, height: Int = -1): Bitmap? {
         var drawable: Drawable = ContextCompat.getDrawable(context, drawableId) ?: return null
         if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
             drawable = DrawableCompat.wrap(drawable).mutate()
@@ -124,7 +124,10 @@ object BitmapUtil {
         return when (drawable) {
             is BitmapDrawable -> drawable.bitmap
             is VectorDrawableCompat, is VectorDrawable -> {
-                val bitmap = Bitmap.createBitmap(drawable.intrinsicWidth, drawable.intrinsicHeight, Bitmap.Config.ARGB_8888)
+                val bitmap = if (width > 0 && height > 0)
+                    Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
+                else
+                    Bitmap.createBitmap(drawable.intrinsicWidth, drawable.intrinsicHeight, Bitmap.Config.ARGB_8888)
                 val canvas = Canvas(bitmap)
                 drawable.setBounds(0, 0, canvas.width, canvas.height)
                 drawable.draw(canvas)
@@ -135,7 +138,7 @@ object BitmapUtil {
     }
 }
 
-fun Context.getBitmapFromDrawable(@DrawableRes drawableId: Int): Bitmap? {
+fun Context.getBitmapFromDrawable(@DrawableRes drawableId: Int, width: Int = -1, height: Int = -1): Bitmap? {
     var drawable: Drawable = try {
         ContextCompat.getDrawable(this, drawableId) ?: return null
     } catch (e: Resources.NotFoundException) {
@@ -147,7 +150,10 @@ fun Context.getBitmapFromDrawable(@DrawableRes drawableId: Int): Bitmap? {
     return when {
         drawable is BitmapDrawable -> drawable.bitmap
         drawable is VectorDrawableCompat || (AndroidUtil.isLolliPopOrLater && drawable is VectorDrawable) -> {
-            val bitmap = Bitmap.createBitmap(drawable.intrinsicWidth, drawable.intrinsicHeight, Bitmap.Config.ARGB_8888)
+            val bitmap = if (width > 0 && height > 0)
+                Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
+            else
+                Bitmap.createBitmap(drawable.intrinsicWidth, drawable.intrinsicHeight, Bitmap.Config.ARGB_8888)
             val canvas = Canvas(bitmap)
             drawable.setBounds(0, 0, canvas.width, canvas.height)
             drawable.draw(canvas)



More information about the Android mailing list