diff --git a/app/src/main/java/com/dkanada/gramophone/service/MusicService.java b/app/src/main/java/com/dkanada/gramophone/service/MusicService.java index 34deef82..d8b6c644 100644 --- a/app/src/main/java/com/dkanada/gramophone/service/MusicService.java +++ b/app/src/main/java/com/dkanada/gramophone/service/MusicService.java @@ -33,7 +33,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.bumptech.glide.RequestBuilder; -import com.bumptech.glide.request.target.SimpleTarget; +import com.bumptech.glide.request.target.CustomTarget; import com.bumptech.glide.request.transition.Transition; import com.dkanada.gramophone.R; import com.dkanada.gramophone.glide.BlurTransformation; @@ -46,7 +46,6 @@ import com.dkanada.gramophone.service.notification.PlayingNotification; import com.dkanada.gramophone.service.notification.PlayingNotificationImpl; import com.dkanada.gramophone.service.notification.PlayingNotificationImpl24; import com.dkanada.gramophone.service.playback.Playback; -import com.dkanada.gramophone.util.MusicUtil; import com.dkanada.gramophone.util.PreferenceUtil; import com.dkanada.gramophone.util.Util; import com.dkanada.gramophone.widgets.AppWidgetAlbum; @@ -551,18 +550,24 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP runOnUiThread(new Runnable() { @Override public void run() { - request.into(new SimpleTarget(screenSize.x, screenSize.y) { + request.into(new CustomTarget(screenSize.x, screenSize.y) { @Override - public void onLoadFailed(Drawable errorDrawable) { - super.onLoadFailed(errorDrawable); + public void onLoadFailed(Drawable drawable) { + super.onLoadFailed(drawable); mediaSession.setMetadata(metaData.build()); } @Override - public void onResourceReady(Bitmap resource, Transition glideAnimation) { + public void onResourceReady(@NonNull Bitmap resource, Transition glideAnimation) { metaData.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, copy(resource)); mediaSession.setMetadata(metaData.build()); } + + @Override + public void onLoadCleared(Drawable drawable) { + super.onLoadFailed(drawable); + mediaSession.setMetadata(metaData.build()); + } }); } }); diff --git a/app/src/main/java/com/dkanada/gramophone/service/notification/PlayingNotificationImpl.java b/app/src/main/java/com/dkanada/gramophone/service/notification/PlayingNotificationImpl.java index d7421796..852edf24 100644 --- a/app/src/main/java/com/dkanada/gramophone/service/notification/PlayingNotificationImpl.java +++ b/app/src/main/java/com/dkanada/gramophone/service/notification/PlayingNotificationImpl.java @@ -12,11 +12,12 @@ import android.text.TextUtils; import android.view.View; import android.widget.RemoteViews; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.app.NotificationCompat; import com.bumptech.glide.Glide; -import com.bumptech.glide.request.target.SimpleTarget; +import com.bumptech.glide.request.target.CustomTarget; import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.transition.Transition; import com.kabouzeid.appthemehelper.util.ColorUtil; @@ -93,15 +94,21 @@ public class PlayingNotificationImpl extends PlayingNotification { target = CustomGlideRequest.Builder .from(service, song.primary, song.blurHash) .palette().build() - .into(new SimpleTarget(bigNotificationImageSize, bigNotificationImageSize) { + .into(new CustomTarget(bigNotificationImageSize, bigNotificationImageSize) { @Override - public void onResourceReady(BitmapPaletteWrapper resource, Transition glideAnimation) { + public void onResourceReady(@NonNull BitmapPaletteWrapper resource, Transition glideAnimation) { update(resource.getBitmap(), ThemeUtil.getColor(resource.getPalette(), Color.TRANSPARENT)); } @Override - public void onLoadFailed(Drawable errorDrawable) { - super.onLoadFailed(errorDrawable); + public void onLoadFailed(Drawable drawable) { + super.onLoadFailed(drawable); + update(null, Color.WHITE); + } + + @Override + public void onLoadCleared(Drawable drawable) { + super.onLoadFailed(drawable); update(null, Color.WHITE); } diff --git a/app/src/main/java/com/dkanada/gramophone/service/notification/PlayingNotificationImpl24.java b/app/src/main/java/com/dkanada/gramophone/service/notification/PlayingNotificationImpl24.java index 6c41d1c9..3d37be59 100644 --- a/app/src/main/java/com/dkanada/gramophone/service/notification/PlayingNotificationImpl24.java +++ b/app/src/main/java/com/dkanada/gramophone/service/notification/PlayingNotificationImpl24.java @@ -9,11 +9,12 @@ import android.graphics.Color; import android.graphics.drawable.Drawable; import android.os.Build; +import androidx.annotation.NonNull; import androidx.core.app.NotificationCompat; import androidx.media.app.NotificationCompat.MediaStyle; import androidx.palette.graphics.Palette; -import com.bumptech.glide.request.target.SimpleTarget; +import com.bumptech.glide.request.target.CustomTarget; import com.bumptech.glide.request.transition.Transition; import com.dkanada.gramophone.R; import com.dkanada.gramophone.glide.CustomGlideRequest; @@ -53,15 +54,20 @@ public class PlayingNotificationImpl24 extends PlayingNotification { service.runOnUiThread(() -> CustomGlideRequest.Builder .from(service, song.primary, song.blurHash) .palette().build() - .into(new SimpleTarget(bigNotificationImageSize, bigNotificationImageSize) { + .into(new CustomTarget(bigNotificationImageSize, bigNotificationImageSize) { @Override - public void onResourceReady(BitmapPaletteWrapper resource, Transition glideAnimation) { + public void onResourceReady(@NonNull BitmapPaletteWrapper resource, Transition glideAnimation) { Palette palette = resource.getPalette(); update(resource.getBitmap(), palette.getVibrantColor(palette.getMutedColor(Color.TRANSPARENT))); } @Override - public void onLoadFailed(Drawable errorDrawable) { + public void onLoadFailed(Drawable drawable) { + update(null, Color.TRANSPARENT); + } + + @Override + public void onLoadCleared(Drawable drawable) { update(null, Color.TRANSPARENT); } diff --git a/app/src/main/java/com/dkanada/gramophone/widgets/AppWidgetAlbum.java b/app/src/main/java/com/dkanada/gramophone/widgets/AppWidgetAlbum.java index deb8c195..fde162b3 100644 --- a/app/src/main/java/com/dkanada/gramophone/widgets/AppWidgetAlbum.java +++ b/app/src/main/java/com/dkanada/gramophone/widgets/AppWidgetAlbum.java @@ -11,10 +11,11 @@ import android.text.TextUtils; import android.view.View; import android.widget.RemoteViews; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.bumptech.glide.Glide; -import com.bumptech.glide.request.target.SimpleTarget; +import com.bumptech.glide.request.target.CustomTarget; import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.transition.Transition; import com.kabouzeid.appthemehelper.util.MaterialValueHelper; @@ -100,15 +101,21 @@ public class AppWidgetAlbum extends BaseAppWidget { target = CustomGlideRequest.Builder .from(appContext, song.primary, song.blurHash) .bitmap().build() - .into(new SimpleTarget(widgetImageSize, widgetImageSize) { + .into(new CustomTarget(widgetImageSize, widgetImageSize) { @Override - public void onResourceReady(Bitmap resource, Transition glideAnimation) { + public void onResourceReady(@NonNull Bitmap resource, Transition glideAnimation) { update(resource); } @Override - public void onLoadFailed(Drawable errorDrawable) { - super.onLoadFailed(errorDrawable); + public void onLoadFailed(Drawable drawable) { + super.onLoadFailed(drawable); + update(null); + } + + @Override + public void onLoadCleared(Drawable drawable) { + super.onLoadFailed(drawable); update(null); } diff --git a/app/src/main/java/com/dkanada/gramophone/widgets/AppWidgetCard.java b/app/src/main/java/com/dkanada/gramophone/widgets/AppWidgetCard.java index 5145e772..23c2ac2e 100644 --- a/app/src/main/java/com/dkanada/gramophone/widgets/AppWidgetCard.java +++ b/app/src/main/java/com/dkanada/gramophone/widgets/AppWidgetCard.java @@ -10,11 +10,12 @@ import android.text.TextUtils; import android.view.View; import android.widget.RemoteViews; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.palette.graphics.Palette; import com.bumptech.glide.Glide; -import com.bumptech.glide.request.target.SimpleTarget; +import com.bumptech.glide.request.target.CustomTarget; import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.transition.Transition; import com.kabouzeid.appthemehelper.util.MaterialValueHelper; @@ -104,16 +105,22 @@ public class AppWidgetCard extends BaseAppWidget { target = CustomGlideRequest.Builder .from(service, song.primary, song.blurHash) .palette().build() - .into(new SimpleTarget(imageSize, imageSize) { + .into(new CustomTarget(imageSize, imageSize) { @Override - public void onResourceReady(BitmapPaletteWrapper resource, Transition glideAnimation) { + public void onResourceReady(@NonNull BitmapPaletteWrapper resource, Transition glideAnimation) { Palette palette = resource.getPalette(); update(resource.getBitmap(), palette.getVibrantColor(palette.getMutedColor(MaterialValueHelper.getSecondaryTextColor(service, true)))); } @Override - public void onLoadFailed(Drawable errorDrawable) { - super.onLoadFailed(errorDrawable); + public void onLoadFailed(Drawable drawable) { + super.onLoadFailed(drawable); + update(null, MaterialValueHelper.getSecondaryTextColor(service, true)); + } + + @Override + public void onLoadCleared(Drawable drawable) { + super.onLoadFailed(drawable); update(null, MaterialValueHelper.getSecondaryTextColor(service, true)); } diff --git a/app/src/main/java/com/dkanada/gramophone/widgets/AppWidgetClassic.java b/app/src/main/java/com/dkanada/gramophone/widgets/AppWidgetClassic.java index 16915412..cf20e712 100644 --- a/app/src/main/java/com/dkanada/gramophone/widgets/AppWidgetClassic.java +++ b/app/src/main/java/com/dkanada/gramophone/widgets/AppWidgetClassic.java @@ -10,11 +10,12 @@ import android.text.TextUtils; import android.view.View; import android.widget.RemoteViews; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.palette.graphics.Palette; import com.bumptech.glide.Glide; -import com.bumptech.glide.request.target.SimpleTarget; +import com.bumptech.glide.request.target.CustomTarget; import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.transition.Transition; import com.kabouzeid.appthemehelper.util.MaterialValueHelper; @@ -97,16 +98,22 @@ public class AppWidgetClassic extends BaseAppWidget { target = CustomGlideRequest.Builder .from(appContext, song.primary, song.blurHash) .palette().build() - .into(new SimpleTarget(imageSize, imageSize) { + .into(new CustomTarget(imageSize, imageSize) { @Override - public void onResourceReady(BitmapPaletteWrapper resource, Transition glideAnimation) { + public void onResourceReady(@NonNull BitmapPaletteWrapper resource, Transition glideAnimation) { Palette palette = resource.getPalette(); update(resource.getBitmap(), palette.getVibrantColor(palette.getMutedColor(MaterialValueHelper.getSecondaryTextColor(appContext, true)))); } @Override - public void onLoadFailed(Drawable errorDrawable) { - super.onLoadFailed(errorDrawable); + public void onLoadFailed(Drawable drawable) { + super.onLoadFailed(drawable); + update(null, MaterialValueHelper.getSecondaryTextColor(appContext, true)); + } + + @Override + public void onLoadCleared(Drawable drawable) { + super.onLoadFailed(drawable); update(null, MaterialValueHelper.getSecondaryTextColor(appContext, true)); }