From 2ec44b351b8159149a08be42177564f725931db5 Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Tue, 4 Mar 2014 16:35:26 -0800 Subject: #299 Use cached image if available --- .../daneren2005/dsub/provider/DSubWidgetProvider.java | 10 +++++----- src/github/daneren2005/dsub/util/ImageLoader.java | 17 +++++++++++++++++ src/github/daneren2005/dsub/util/Util.java | 8 ++++++-- 3 files changed, 28 insertions(+), 7 deletions(-) (limited to 'src/github') diff --git a/src/github/daneren2005/dsub/provider/DSubWidgetProvider.java b/src/github/daneren2005/dsub/provider/DSubWidgetProvider.java index 04c43dbd..7d80df16 100644 --- a/src/github/daneren2005/dsub/provider/DSubWidgetProvider.java +++ b/src/github/daneren2005/dsub/provider/DSubWidgetProvider.java @@ -41,6 +41,7 @@ import android.view.View; import android.widget.RemoteViews; import github.daneren2005.dsub.R; import github.daneren2005.dsub.activity.DownloadActivity; +import github.daneren2005.dsub.activity.SubsonicActivity; import github.daneren2005.dsub.activity.SubsonicFragmentActivity; import github.daneren2005.dsub.domain.MusicDirectory; import github.daneren2005.dsub.service.DownloadService; @@ -197,13 +198,12 @@ public class DSubWidgetProvider extends AppWidgetProvider { // Set the cover art try { - int size; + boolean large = false; if(getLayout() != R.layout.appwidget4x1 && getLayout() != R.layout.appwidget4x2) { - size = context.getResources().getDrawable(R.drawable.unknown_album_large).getIntrinsicHeight(); - } else { - size = context.getResources().getDrawable(R.drawable.appwidget_art_default).getIntrinsicHeight(); + large = true; } - Bitmap bitmap = currentPlaying == null ? null : FileUtil.getAlbumArtBitmap(context, currentPlaying, size); + ImageLoader imageLoader = SubsonicActivity.getStaticImageLoader(context); + Bitmap bitmap = imageLoader == null ? null : imageLoader.getCachedImage(context, currentPlaying, large); if (bitmap == null) { // Set default cover art diff --git a/src/github/daneren2005/dsub/util/ImageLoader.java b/src/github/daneren2005/dsub/util/ImageLoader.java index f9f71e92..970e1b0e 100644 --- a/src/github/daneren2005/dsub/util/ImageLoader.java +++ b/src/github/daneren2005/dsub/util/ImageLoader.java @@ -99,6 +99,23 @@ public class ImageLoader { largeUnknownImage = Util.createDrawableFromBitmap(context, bitmap); } + public Bitmap getCachedImage(Context context, MusicDirectory.Entry entry, boolean large) { + if(entry == null || entry.getCoverArt() == null) { + return null; + } + + int size = large ? imageSizeLarge : imageSizeDefault; + Bitmap bitmap = cache.get(getKey(entry.getCoverArt(), size)); + if(bitmap == null || bitmap.isRecycled()) { + bitmap = FileUtil.getAlbumArtBitmap(context, entry, size); + String key = getKey(entry.getCoverArt(), size); + cache.put(key, bitmap); + cache.get(key); + } + + return bitmap; + } + public void loadImage(View view, MusicDirectory.Entry entry, boolean large, boolean crossfade) { if (largeUnknownImage != null && ((BitmapDrawable)largeUnknownImage).getBitmap().isRecycled()) { createLargeUnknownImage(view.getContext()); diff --git a/src/github/daneren2005/dsub/util/Util.java b/src/github/daneren2005/dsub/util/Util.java index 55143b99..13392329 100644 --- a/src/github/daneren2005/dsub/util/Util.java +++ b/src/github/daneren2005/dsub/util/Util.java @@ -55,6 +55,7 @@ import android.widget.RemoteViews; import android.widget.TextView; import android.widget.Toast; import github.daneren2005.dsub.R; +import github.daneren2005.dsub.activity.SubsonicActivity; import github.daneren2005.dsub.activity.SubsonicFragmentActivity; import github.daneren2005.dsub.domain.MusicDirectory; import github.daneren2005.dsub.domain.PlayerState; @@ -1013,8 +1014,11 @@ public final class Util { // Set the album art. try { - int size = context.getResources().getDrawable(R.drawable.unknown_album).getIntrinsicHeight(); - Bitmap bitmap = FileUtil.getAlbumArtBitmap(context, song, size); + ImageLoader imageLoader = SubsonicActivity.getStaticImageLoader(context); + Bitmap bitmap; + if(imageLoader != null) { + bitmap = imageLoader.getCachedImage(context, song, false); + } if (bitmap == null) { // set default album art rv.setImageViewResource(R.id.notification_image, R.drawable.unknown_album); -- cgit v1.2.3