aboutsummaryrefslogtreecommitdiff
path: root/src/github
diff options
context:
space:
mode:
authorScott Jackson <daneren2005@gmail.com>2014-03-04 16:35:26 -0800
committerScott Jackson <daneren2005@gmail.com>2014-03-04 16:35:26 -0800
commit2ec44b351b8159149a08be42177564f725931db5 (patch)
tree8f0b40ec40c596054da8f64f922b3bee4ff2b200 /src/github
parent57d8d5f8d57850384f01b84e38337adbcde9a065 (diff)
downloaddsub-2ec44b351b8159149a08be42177564f725931db5.tar.gz
dsub-2ec44b351b8159149a08be42177564f725931db5.tar.bz2
dsub-2ec44b351b8159149a08be42177564f725931db5.zip
#299 Use cached image if available
Diffstat (limited to 'src/github')
-rw-r--r--src/github/daneren2005/dsub/provider/DSubWidgetProvider.java10
-rw-r--r--src/github/daneren2005/dsub/util/ImageLoader.java17
-rw-r--r--src/github/daneren2005/dsub/util/Util.java8
3 files changed, 28 insertions, 7 deletions
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);