diff --git a/app/src/main/java/com/kabouzeid/gramophone/appwidget/WidgetMedium.java b/app/src/main/java/com/kabouzeid/gramophone/appwidget/WidgetMedium.java
index 26f14166..567129f6 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/appwidget/WidgetMedium.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/appwidget/WidgetMedium.java
@@ -18,12 +18,14 @@ import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.service.MusicService;
import com.kabouzeid.gramophone.ui.activities.MainActivity;
import com.kabouzeid.gramophone.util.MusicUtil;
+import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.assist.ImageSize;
import com.nostra13.universalimageloader.core.assist.ViewScaleType;
import com.nostra13.universalimageloader.core.imageaware.NonViewAware;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
+import com.nostra13.universalimageloader.core.process.BitmapProcessor;
public class WidgetMedium extends AppWidgetProvider {
private static RemoteViews widgetLayout;
@@ -66,33 +68,40 @@ public class WidgetMedium extends AppWidgetProvider {
private static void loadAlbumArt(@NonNull final Context context, @Nullable final Song song) {
if (song != null) {
+ int widgetImageSize = context.getResources().getDimensionPixelSize(R.dimen.widget_medium_image_size);
currentAlbumArtUri = MusicUtil.getSongImageLoaderString(song);
- ImageLoader.getInstance().displayImage(currentAlbumArtUri, new NonViewAware(new ImageSize(-1, -1), ViewScaleType.CROP), new SimpleImageLoadingListener() {
- @Override
- public void onLoadingComplete(String imageUri, View view, @Nullable Bitmap loadedImage) {
- if (currentAlbumArtUri.equals(imageUri)) {
- if (loadedImage != null) {
- // The RemoteViews might wants to recycle the bitmaps thrown at it, so we need
- // to make sure not to hand out our cache copy
- Bitmap.Config config = loadedImage.getConfig();
- if (config == null) {
- config = Bitmap.Config.ARGB_8888;
+ ImageLoader.getInstance().displayImage(
+ currentAlbumArtUri,
+ new NonViewAware(new ImageSize(widgetImageSize, widgetImageSize), ViewScaleType.CROP),
+ new DisplayImageOptions.Builder()
+ .postProcessor(new BitmapProcessor() {
+ @Override
+ public Bitmap process(Bitmap bitmap) {
+ // The RemoteViews might wants to recycle the bitmaps thrown at it, so we need
+ // to make sure not to hand out our cache copy
+ Bitmap.Config config = bitmap.getConfig();
+ if (config == null) {
+ config = Bitmap.Config.ARGB_8888;
+ }
+ bitmap = bitmap.copy(config, false);
+ return bitmap.copy(bitmap.getConfig(), true);
+ }
+ }).build(),
+ new SimpleImageLoadingListener() {
+ @Override
+ public void onLoadingComplete(String imageUri, View view, @Nullable Bitmap loadedImage) {
+ if (currentAlbumArtUri.equals(imageUri)) {
+ setAlbumArt(context, loadedImage);
}
- loadedImage = loadedImage.copy(config, false);
- setAlbumArt(context, loadedImage.copy(loadedImage.getConfig(), true));
- } else {
- setAlbumArt(context, null);
}
- }
- }
- @Override
- public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
- if (currentAlbumArtUri.equals(imageUri)) {
- setAlbumArt(context, null);
- }
- }
- });
+ @Override
+ public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
+ if (currentAlbumArtUri.equals(imageUri)) {
+ setAlbumArt(context, null);
+ }
+ }
+ });
}
}
diff --git a/app/src/main/java/com/kabouzeid/gramophone/helper/PlayingNotificationHelper.java b/app/src/main/java/com/kabouzeid/gramophone/helper/PlayingNotificationHelper.java
index 887f5844..f3d7b189 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/helper/PlayingNotificationHelper.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/helper/PlayingNotificationHelper.java
@@ -46,7 +46,7 @@ public class PlayingNotificationHelper {
@NonNull
private final NotificationManager notificationManager;
@Nullable
- private Notification notification = null;
+ private Notification notification;
private RemoteViews notificationLayout;
private RemoteViews notificationLayoutExpanded;
@@ -59,6 +59,8 @@ public class PlayingNotificationHelper {
private boolean isReceiverRegistered;
private boolean isNotificationShown;
+ private int bigNotificationImageSize;
+
@NonNull
final IntentFilter intentFilter;
@@ -69,6 +71,8 @@ public class PlayingNotificationHelper {
intentFilter = new IntentFilter();
intentFilter.addAction(ACTION_NOTIFICATION_COLOR_PREFERENCE_CHANGED);
+
+ bigNotificationImageSize = service.getResources().getDimensionPixelSize(R.dimen.notification_big_image_size);
}
@NonNull
@@ -211,19 +215,22 @@ public class PlayingNotificationHelper {
private void loadAlbumArt() {
currentAlbumArtUri = MusicUtil.getSongImageLoaderString(currentSong);
- ImageLoader.getInstance().displayImage(currentAlbumArtUri, new NonViewAware(new ImageSize(-1, -1), ViewScaleType.CROP), new SimpleImageLoadingListener() {
- @Override
- public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
- if (currentAlbumArtUri.equals(imageUri))
- setAlbumArt(loadedImage);
- }
+ ImageLoader.getInstance().displayImage(
+ currentAlbumArtUri,
+ new NonViewAware(new ImageSize(bigNotificationImageSize, bigNotificationImageSize), ViewScaleType.CROP),
+ new SimpleImageLoadingListener() {
+ @Override
+ public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
+ if (currentAlbumArtUri.equals(imageUri))
+ setAlbumArt(loadedImage);
+ }
- @Override
- public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
- if (currentAlbumArtUri.equals(imageUri))
- setAlbumArt(null);
- }
- });
+ @Override
+ public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
+ if (currentAlbumArtUri.equals(imageUri))
+ setAlbumArt(null);
+ }
+ });
}
private void setAlbumArt(@Nullable Bitmap albumArt) {
@@ -244,7 +251,9 @@ public class PlayingNotificationHelper {
}
}
- notificationManager.notify(NOTIFICATION_ID, notification);
+ if (notification != null) {
+ notificationManager.notify(NOTIFICATION_ID, notification);
+ }
}
private void setBackgroundColor(int color) {
diff --git a/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java b/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java
index 5d299252..5436e96c 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java
@@ -38,12 +38,14 @@ import com.kabouzeid.gramophone.provider.RecentlyPlayedStore;
import com.kabouzeid.gramophone.provider.SongPlayCountStore;
import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.PreferenceUtils;
+import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.assist.ImageSize;
import com.nostra13.universalimageloader.core.assist.ViewScaleType;
import com.nostra13.universalimageloader.core.imageaware.NonViewAware;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
+import com.nostra13.universalimageloader.core.process.BitmapProcessor;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
@@ -438,33 +440,38 @@ public class MusicService extends Service {
.apply();
if (showAlbumArt) {
final String currentAlbumArtUri = MusicUtil.getSongImageLoaderString(song);
- ImageLoader.getInstance().displayImage(currentAlbumArtUri, new NonViewAware(new ImageSize(-1, -1), ViewScaleType.CROP), new SimpleImageLoadingListener() {
- @Override
- public void onLoadingComplete(String imageUri, View view, @Nullable Bitmap loadedImage) {
- if (!currentAlbumArtUri.equals(imageUri)) {
- return;
- }
- if (loadedImage == null) {
- onLoadingFailed(imageUri, view, null);
- return;
- }
- // RemoteControlClient wants to recycle the bitmaps thrown at it, so we need
- // to make sure not to hand out our cache copy
- Bitmap.Config config = loadedImage.getConfig();
- if (config == null) {
- config = Bitmap.Config.ARGB_8888;
- }
- loadedImage = loadedImage.copy(config, false);
- updateRemoteControlClientBitmap(loadedImage.copy(loadedImage.getConfig(), true));
- }
+ ImageLoader.getInstance().displayImage(
+ currentAlbumArtUri,
+ new NonViewAware(new ImageSize(-1, -1), ViewScaleType.CROP),
+ new DisplayImageOptions.Builder()
+ .postProcessor(new BitmapProcessor() {
+ @Override
+ public Bitmap process(Bitmap bitmap) {
+ // RemoteControlClient wants to recycle the bitmaps thrown at it, so we need
+ // to make sure not to hand out our cache copy
+ Bitmap.Config config = bitmap.getConfig();
+ if (config == null) {
+ config = Bitmap.Config.ARGB_8888;
+ }
+ bitmap = bitmap.copy(config, false);
+ return bitmap.copy(bitmap.getConfig(), true);
+ }
+ }).build(),
+ new SimpleImageLoadingListener() {
+ @Override
+ public void onLoadingComplete(String imageUri, View view, @Nullable Bitmap loadedImage) {
+ if (currentAlbumArtUri.equals(imageUri)) {
+ updateRemoteControlClientBitmap(loadedImage);
+ }
+ }
- @Override
- public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
- if (currentAlbumArtUri.equals(imageUri)) {
- updateRemoteControlClientBitmap(null);
- }
- }
- });
+ @Override
+ public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
+ if (currentAlbumArtUri.equals(imageUri)) {
+ updateRemoteControlClientBitmap(null);
+ }
+ }
+ });
} else {
updateRemoteControlClientBitmap(null);
}
diff --git a/app/src/main/res/layout/notification_controller_big.xml b/app/src/main/res/layout/notification_controller_big.xml
index 0e28f98c..fdbaaeb3 100644
--- a/app/src/main/res/layout/notification_controller_big.xml
+++ b/app/src/main/res/layout/notification_controller_big.xml
@@ -23,8 +23,8 @@
diff --git a/app/src/main/res/layout/notification_controller_big_colored.xml b/app/src/main/res/layout/notification_controller_big_colored.xml
index 854efffc..bfd9a571 100644
--- a/app/src/main/res/layout/notification_controller_big_colored.xml
+++ b/app/src/main/res/layout/notification_controller_big_colored.xml
@@ -24,8 +24,8 @@
diff --git a/app/src/main/res/layout/widget_medium.xml b/app/src/main/res/layout/widget_medium.xml
index 27b2d59b..c8f1a15d 100644
--- a/app/src/main/res/layout/widget_medium.xml
+++ b/app/src/main/res/layout/widget_medium.xml
@@ -7,8 +7,8 @@
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 18702535..41d947c8 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -17,12 +17,6 @@
0dp
-
- 64.0dip
- 64.0dip
- 8.0dip
- 4.0dip
-
48dp
100dp
@@ -31,8 +25,6 @@
Refer to App Widget Documentation for margin information
http://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout
-->
- 64dp
-
5dp
4dp
14dp
@@ -48,7 +40,9 @@ http://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout
-17dp
2dp
- 128dp
+ 96dp
+ 128dp
+
86dp
8dp