Use disk cache

This commit is contained in:
Karim Abou Zeid 2016-01-02 23:57:14 +01:00
commit 533708e63d
18 changed files with 77 additions and 94 deletions

View file

@ -11,6 +11,7 @@ import android.widget.ImageView;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.signature.MediaStoreSignature;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.glide.PhonographColoredTarget; import com.kabouzeid.gramophone.glide.PhonographColoredTarget;
import com.kabouzeid.gramophone.glide.palette.BitmapPaletteTranscoder; import com.kabouzeid.gramophone.glide.palette.BitmapPaletteTranscoder;
@ -132,8 +133,9 @@ public class AlbumCoverPagerAdapter extends CustomFragmentStatePagerAdapter {
.loadFromMediaStore(MusicUtil.getAlbumArtUri(song.albumId)) .loadFromMediaStore(MusicUtil.getAlbumArtUri(song.albumId))
.asBitmap() .asBitmap()
.transcode(new BitmapPaletteTranscoder(getActivity()), BitmapPaletteWrapper.class) .transcode(new BitmapPaletteTranscoder(getActivity()), BitmapPaletteWrapper.class)
.diskCacheStrategy(DiskCacheStrategy.NONE) .diskCacheStrategy(DiskCacheStrategy.ALL)
.error(R.drawable.default_album_art) .error(R.drawable.default_album_art)
.signature(new MediaStoreSignature("", song.dateModified, 0))
.into(new PhonographColoredTarget(albumCover) { .into(new PhonographColoredTarget(albumCover) {
@Override @Override
public void onColorReady(int color) { public void onColorReady(int color) {

View file

@ -11,6 +11,7 @@ import android.view.ViewGroup;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.signature.MediaStoreSignature;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.base.MediaEntryViewHolder; import com.kabouzeid.gramophone.adapter.base.MediaEntryViewHolder;
import com.kabouzeid.gramophone.glide.artistimage.ArtistImageRequest; import com.kabouzeid.gramophone.glide.artistimage.ArtistImageRequest;
@ -98,9 +99,10 @@ public class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.ViewHolder
holder.text.setText(album.getArtistName()); holder.text.setText(album.getArtistName());
Glide.with(activity) Glide.with(activity)
.loadFromMediaStore(MusicUtil.getAlbumArtUri(album.getId())) .loadFromMediaStore(MusicUtil.getAlbumArtUri(album.getId()))
.diskCacheStrategy(DiskCacheStrategy.NONE) .diskCacheStrategy(DiskCacheStrategy.ALL)
.error(R.drawable.default_album_art) .error(R.drawable.default_album_art)
.animate(android.R.anim.fade_in) .animate(android.R.anim.fade_in)
.signature(new MediaStoreSignature("", album.getDateModified(), 0))
.into(holder.image); .into(holder.image);
break; break;
case ARTIST: case ARTIST:

View file

@ -13,6 +13,7 @@ import android.view.ViewGroup;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.signature.MediaStoreSignature;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.base.AbsMultiSelectAdapter; import com.kabouzeid.gramophone.adapter.base.AbsMultiSelectAdapter;
import com.kabouzeid.gramophone.adapter.base.MediaEntryViewHolder; import com.kabouzeid.gramophone.adapter.base.MediaEntryViewHolder;
@ -123,9 +124,10 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
.loadFromMediaStore(MusicUtil.getAlbumArtUri(album.getId())) .loadFromMediaStore(MusicUtil.getAlbumArtUri(album.getId()))
.asBitmap() .asBitmap()
.transcode(new BitmapPaletteTranscoder(activity), BitmapPaletteWrapper.class) .transcode(new BitmapPaletteTranscoder(activity), BitmapPaletteWrapper.class)
.diskCacheStrategy(DiskCacheStrategy.NONE) .diskCacheStrategy(DiskCacheStrategy.ALL)
.error(R.drawable.default_album_art) .error(R.drawable.default_album_art)
.animate(android.R.anim.fade_in) .animate(android.R.anim.fade_in)
.signature(new MediaStoreSignature("", album.getDateModified(), 0))
.into(new PhonographColoredTarget(holder.image) { .into(new PhonographColoredTarget(holder.image) {
@Override @Override
public void onLoadCleared(Drawable placeholder) { public void onLoadCleared(Drawable placeholder) {

View file

@ -17,6 +17,7 @@ import android.widget.TextView;
import com.afollestad.materialcab.MaterialCab; import com.afollestad.materialcab.MaterialCab;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.signature.MediaStoreSignature;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.dialogs.AddToPlaylistDialog; import com.kabouzeid.gramophone.dialogs.AddToPlaylistDialog;
import com.kabouzeid.gramophone.dialogs.DeleteSongsDialog; import com.kabouzeid.gramophone.dialogs.DeleteSongsDialog;
@ -76,9 +77,10 @@ public class ArtistSongAdapter extends ArrayAdapter<Song> implements MaterialCab
Glide.with(activity) Glide.with(activity)
.loadFromMediaStore(MusicUtil.getAlbumArtUri(song.albumId)) .loadFromMediaStore(MusicUtil.getAlbumArtUri(song.albumId))
.diskCacheStrategy(DiskCacheStrategy.NONE) .diskCacheStrategy(DiskCacheStrategy.ALL)
.error(R.drawable.default_album_art) .error(R.drawable.default_album_art)
.animate(android.R.anim.fade_in) .animate(android.R.anim.fade_in)
.signature(new MediaStoreSignature("", song.dateModified, 0))
.into(albumArt); .into(albumArt);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

View file

@ -14,6 +14,7 @@ import android.view.ViewGroup;
import com.afollestad.materialcab.MaterialCab; import com.afollestad.materialcab.MaterialCab;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.signature.MediaStoreSignature;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.base.AbsMultiSelectAdapter; import com.kabouzeid.gramophone.adapter.base.AbsMultiSelectAdapter;
import com.kabouzeid.gramophone.adapter.base.MediaEntryViewHolder; import com.kabouzeid.gramophone.adapter.base.MediaEntryViewHolder;
@ -125,9 +126,10 @@ public class SongAdapter extends AbsMultiSelectAdapter<SongAdapter.ViewHolder, S
.loadFromMediaStore(MusicUtil.getAlbumArtUri(song.albumId)) .loadFromMediaStore(MusicUtil.getAlbumArtUri(song.albumId))
.asBitmap() .asBitmap()
.transcode(new BitmapPaletteTranscoder(activity), BitmapPaletteWrapper.class) .transcode(new BitmapPaletteTranscoder(activity), BitmapPaletteWrapper.class)
.diskCacheStrategy(DiskCacheStrategy.NONE) .diskCacheStrategy(DiskCacheStrategy.ALL)
.error(R.drawable.default_album_art) .error(R.drawable.default_album_art)
.animate(android.R.anim.fade_in) .animate(android.R.anim.fade_in)
.signature(new MediaStoreSignature("", song.dateModified, 0))
.into(new PhonographColoredTarget(holder.image) { .into(new PhonographColoredTarget(holder.image) {
@Override @Override
public void onLoadCleared(Drawable placeholder) { public void onLoadCleared(Drawable placeholder) {

View file

@ -19,6 +19,7 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.animation.GlideAnimation; import com.bumptech.glide.request.animation.GlideAnimation;
import com.bumptech.glide.request.target.SimpleTarget; import com.bumptech.glide.request.target.SimpleTarget;
import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.target.Target;
import com.bumptech.glide.signature.MediaStoreSignature;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.model.Song;
@ -88,7 +89,8 @@ public class WidgetMedium extends AppWidgetProvider {
Glide.with(context) Glide.with(context)
.loadFromMediaStore(MusicUtil.getAlbumArtUri(song.albumId)) .loadFromMediaStore(MusicUtil.getAlbumArtUri(song.albumId))
.asBitmap() .asBitmap()
.diskCacheStrategy(DiskCacheStrategy.NONE) .diskCacheStrategy(DiskCacheStrategy.ALL)
.signature(new MediaStoreSignature("", song.dateModified, 0))
.into(target); .into(target);
} }
}); });

View file

@ -1,12 +1,13 @@
package com.kabouzeid.gramophone.glide.audiocover; package com.kabouzeid.gramophone.glide.audiocover;
import android.content.Context; import android.content.Context;
import android.media.MediaMetadataRetriever;
import com.bumptech.glide.Priority; import com.bumptech.glide.Priority;
import com.bumptech.glide.load.data.DataFetcher; import com.bumptech.glide.load.data.DataFetcher;
import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.util.MusicUtil;
import java.io.ByteArrayInputStream;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
@ -33,19 +34,18 @@ public class AudioFileCoverFetcher implements DataFetcher<InputStream> {
@Override @Override
public InputStream loadData(Priority priority) throws Exception { public InputStream loadData(Priority priority) throws Exception {
// MediaMetadataRetriever retriever = new MediaMetadataRetriever(); MediaMetadataRetriever retriever = new MediaMetadataRetriever();
// try { try {
// retriever.setDataSource(model.data); retriever.setDataSource(model.data);
// byte[] picture = retriever.getEmbeddedPicture(); byte[] picture = retriever.getEmbeddedPicture();
// if (picture != null) { if (picture != null) {
// return new ByteArrayInputStream(picture); return new ByteArrayInputStream(picture);
// } else { } else {
// return fallback(model.data); return fallback(model.data);
// } }
// } finally { } finally {
// retriever.release(); retriever.release();
// } }
return context.getContentResolver().openInputStream(MusicUtil.getAlbumArtUri(model.albumId));
} }
private static final String[] FALLBACKS = {"cover.jpg", "album.jpg", "folder.jpg"}; private static final String[] FALLBACKS = {"cover.jpg", "album.jpg", "folder.jpg"};

View file

@ -25,6 +25,7 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.animation.GlideAnimation; import com.bumptech.glide.request.animation.GlideAnimation;
import com.bumptech.glide.request.target.SimpleTarget; import com.bumptech.glide.request.target.SimpleTarget;
import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.target.Target;
import com.bumptech.glide.signature.MediaStoreSignature;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.glide.palette.BitmapPaletteTranscoder; import com.kabouzeid.gramophone.glide.palette.BitmapPaletteTranscoder;
import com.kabouzeid.gramophone.glide.palette.BitmapPaletteWrapper; import com.kabouzeid.gramophone.glide.palette.BitmapPaletteWrapper;
@ -198,7 +199,8 @@ public class PlayingNotificationHelper {
.loadFromMediaStore(MusicUtil.getAlbumArtUri(currentSong.albumId)) .loadFromMediaStore(MusicUtil.getAlbumArtUri(currentSong.albumId))
.asBitmap() .asBitmap()
.transcode(new BitmapPaletteTranscoder(service), BitmapPaletteWrapper.class) .transcode(new BitmapPaletteTranscoder(service), BitmapPaletteWrapper.class)
.diskCacheStrategy(DiskCacheStrategy.NONE) .diskCacheStrategy(DiskCacheStrategy.ALL)
.signature(new MediaStoreSignature("", currentSong.dateModified, 0))
.into(target); .into(target);
} }
}); });

View file

@ -15,14 +15,11 @@ import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import hugo.weaving.DebugLog;
/** /**
* @author Karim Abou Zeid (kabouzeid) * @author Karim Abou Zeid (kabouzeid)
*/ */
public class AlbumLoader { public class AlbumLoader {
@DebugLog
@NonNull @NonNull
public static ArrayList<Album> getAllAlbums(@NonNull final Context context) { public static ArrayList<Album> getAllAlbums(@NonNull final Context context) {
ArrayList<Song> songs = SongLoader.getSongs(SongLoader.makeSongCursor( ArrayList<Song> songs = SongLoader.getSongs(SongLoader.makeSongCursor(

View file

@ -2,6 +2,7 @@ package com.kabouzeid.gramophone.model;
import android.os.Parcel; import android.os.Parcel;
import android.os.Parcelable; import android.os.Parcelable;
import android.support.annotation.NonNull;
import java.util.ArrayList; import java.util.ArrayList;
@ -20,27 +21,32 @@ public class Album implements Parcelable {
} }
public int getId() { public int getId() {
return songs.get(0).albumId; return safeGetFirstSong().albumId;
} }
public String getTitle() { public String getTitle() {
return songs.get(0).albumName; return safeGetFirstSong().albumName;
} }
public int getArtistId() { public int getArtistId() {
return songs.get(0).artistId; return safeGetFirstSong().artistId;
} }
public String getArtistName() { public String getArtistName() {
return songs.get(0).artistName; return safeGetFirstSong().artistName;
} }
public int getYear() { public int getYear() {
return songs.get(0).year; return safeGetFirstSong().year;
} }
public int getSongCount() { public long getDateModified() {
return songs.size(); return safeGetFirstSong().dateModified;
}
@NonNull
public Song safeGetFirstSong() {
return songs.isEmpty() ? new Song() : songs.get(0);
} }
@Override @Override

View file

@ -94,7 +94,7 @@ public class Song implements Parcelable {
", year=" + year + ", year=" + year +
", duration=" + duration + ", duration=" + duration +
", data='" + data + '\'' + ", data='" + data + '\'' +
", dateModified=" + dateModified + ", getDateModified=" + dateModified +
", albumId=" + albumId + ", albumId=" + albumId +
", albumName='" + albumName + '\'' + ", albumName='" + albumName + '\'' +
", artistId=" + artistId + ", artistId=" + artistId +

View file

@ -36,6 +36,7 @@ import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.animation.GlideAnimation; import com.bumptech.glide.request.animation.GlideAnimation;
import com.bumptech.glide.request.target.SimpleTarget; import com.bumptech.glide.request.target.SimpleTarget;
import com.bumptech.glide.signature.MediaStoreSignature;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.appwidget.WidgetMedium; import com.kabouzeid.gramophone.appwidget.WidgetMedium;
import com.kabouzeid.gramophone.glide.BlurTransformation; import com.kabouzeid.gramophone.glide.BlurTransformation;
@ -448,7 +449,8 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
final BitmapRequestBuilder request = Glide.with(MusicService.this) final BitmapRequestBuilder request = Glide.with(MusicService.this)
.loadFromMediaStore(MusicUtil.getAlbumArtUri(song.albumId)) .loadFromMediaStore(MusicUtil.getAlbumArtUri(song.albumId))
.asBitmap() .asBitmap()
.diskCacheStrategy(DiskCacheStrategy.NONE); .diskCacheStrategy(DiskCacheStrategy.ALL)
.signature(new MediaStoreSignature("", song.dateModified, 0));
if (blurAlbumArt) { if (blurAlbumArt) {
request.transform(new BlurTransformation.Builder(MusicService.this).build()); request.transform(new BlurTransformation.Builder(MusicService.this).build());
} }

View file

@ -19,6 +19,7 @@ import com.afollestad.materialdialogs.util.DialogUtils;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.animation.GlideAnimation; import com.bumptech.glide.request.animation.GlideAnimation;
import com.bumptech.glide.signature.MediaStoreSignature;
import com.github.ksoichiro.android.observablescrollview.ObservableRecyclerView; import com.github.ksoichiro.android.observablescrollview.ObservableRecyclerView;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.song.AlbumSongAdapter; import com.kabouzeid.gramophone.adapter.song.AlbumSongAdapter;
@ -149,16 +150,17 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
albumTitleView.setText(album.getTitle()); albumTitleView.setText(album.getTitle());
setUpRecyclerViewView(); setUpRecyclerViewView();
setUpSongsAdapter(); setUpSongsAdapter();
setUpAlbumArtAndApplyPalette(); loadAlbumCover();
} }
private void setUpAlbumArtAndApplyPalette() { private void loadAlbumCover() {
Glide.with(this) Glide.with(this)
.loadFromMediaStore(MusicUtil.getAlbumArtUri(album.getId())) .loadFromMediaStore(MusicUtil.getAlbumArtUri(album.getId()))
.asBitmap() .asBitmap()
.transcode(new BitmapPaletteTranscoder(this), BitmapPaletteWrapper.class) .transcode(new BitmapPaletteTranscoder(this), BitmapPaletteWrapper.class)
.diskCacheStrategy(DiskCacheStrategy.NONE) .diskCacheStrategy(DiskCacheStrategy.ALL)
.error(R.drawable.default_album_art) .error(R.drawable.default_album_art)
.signature(new MediaStoreSignature("", album.getDateModified(), 0))
.into(new PhonographColoredTarget(albumArtImageView) { .into(new PhonographColoredTarget(albumArtImageView) {
@Override @Override
public void onResourceReady(BitmapPaletteWrapper resource, GlideAnimation<? super BitmapPaletteWrapper> glideAnimation) { public void onResourceReady(BitmapPaletteWrapper resource, GlideAnimation<? super BitmapPaletteWrapper> glideAnimation) {
@ -242,12 +244,11 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
}); });
} }
private void reloadDataSet() { private void refresh() {
adapter.swapDataSet(album.songs);
}
private void reloadAlbum() {
album = AlbumLoader.getAlbum(this, album.getId()); album = AlbumLoader.getAlbum(this, album.getId());
albumTitleView.setText(album.getTitle());
loadAlbumCover();
adapter.swapDataSet(album.songs);
} }
@Override @Override
@ -302,9 +303,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
protected void onActivityResult(int requestCode, int resultCode, Intent data) { protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);
if (requestCode == TAG_EDITOR_REQUEST) { if (requestCode == TAG_EDITOR_REQUEST) {
getAlbumFromIntentExtras(); refresh();
albumTitleView.setText(album.getTitle());
setUpAlbumArtAndApplyPalette();
setResult(RESULT_OK); setResult(RESULT_OK);
} }
} }
@ -349,6 +348,6 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
@Override @Override
public void onMediaStoreChanged() { public void onMediaStoreChanged() {
super.onMediaStoreChanged(); super.onMediaStoreChanged();
reloadDataSet(); refresh();
} }
} }

View file

@ -37,6 +37,7 @@ import com.afollestad.materialcab.MaterialCab;
import com.afollestad.materialdialogs.internal.ThemeSingleton; import com.afollestad.materialdialogs.internal.ThemeSingleton;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.signature.MediaStoreSignature;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.PagerAdapter; import com.kabouzeid.gramophone.adapter.PagerAdapter;
import com.kabouzeid.gramophone.dialogs.ChangelogDialog; import com.kabouzeid.gramophone.dialogs.ChangelogDialog;
@ -276,9 +277,10 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
((TextView) navigationDrawerHeader.findViewById(R.id.text)).setText(song.artistName); ((TextView) navigationDrawerHeader.findViewById(R.id.text)).setText(song.artistName);
Glide.with(this) Glide.with(this)
.loadFromMediaStore(MusicUtil.getAlbumArtUri(song.albumId)) .loadFromMediaStore(MusicUtil.getAlbumArtUri(song.albumId))
.diskCacheStrategy(DiskCacheStrategy.NONE) .diskCacheStrategy(DiskCacheStrategy.ALL)
.error(R.drawable.default_album_art) .error(R.drawable.default_album_art)
.animate(android.R.anim.fade_in) .animate(android.R.anim.fade_in)
.signature(new MediaStoreSignature("", song.dateModified, 0))
.into(((ImageView) navigationDrawerHeader.findViewById(R.id.image))); .into(((ImageView) navigationDrawerHeader.findViewById(R.id.image)));
} else { } else {
if (navigationDrawerHeader != null) { if (navigationDrawerHeader != null) {

View file

@ -19,7 +19,6 @@ import android.view.MenuItem;
import android.view.View; import android.view.View;
import com.afollestad.materialdialogs.color.ColorChooserDialog; import com.afollestad.materialdialogs.color.ColorChooserDialog;
import com.bumptech.glide.Glide;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.prefs.ColorChooserPreference; import com.kabouzeid.gramophone.prefs.ColorChooserPreference;
import com.kabouzeid.gramophone.ui.activities.base.AbsBaseActivity; import com.kabouzeid.gramophone.ui.activities.base.AbsBaseActivity;
@ -194,15 +193,6 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
}); });
} }
Preference ignoreMediaStoreArtwork = findPreference("ignore_media_store_artwork");
ignoreMediaStoreArtwork.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
Glide.get(getActivity()).clearMemory();
return true;
}
});
Preference equalizer = findPreference("equalizer"); Preference equalizer = findPreference("equalizer");
if (!hasEqualizer()) { if (!hasEqualizer()) {
equalizer.setEnabled(false); equalizer.setEnabled(false);

View file

@ -22,10 +22,8 @@ import android.view.View;
import android.view.animation.OvershootInterpolator; import android.view.animation.OvershootInterpolator;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.Toast;
import com.afollestad.materialdialogs.MaterialDialog; import com.afollestad.materialdialogs.MaterialDialog;
import com.bumptech.glide.Glide;
import com.github.ksoichiro.android.observablescrollview.ObservableScrollView; import com.github.ksoichiro.android.observablescrollview.ObservableScrollView;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.misc.SimpleObservableScrollViewCallbacks; import com.kabouzeid.gramophone.misc.SimpleObservableScrollViewCallbacks;
@ -275,7 +273,11 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
} }
protected void setImageBitmap(@Nullable final Bitmap bitmap, int bgColor) { protected void setImageBitmap(@Nullable final Bitmap bitmap, int bgColor) {
if (bitmap == null) {
image.setImageResource(R.drawable.default_album_art);
} else {
image.setImageBitmap(bitmap); image.setImageBitmap(bitmap);
}
setColors(bgColor); setColors(bgColor);
} }
@ -355,11 +357,8 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
}); });
if (deleteArtwork) { if (deleteArtwork) {
MusicUtil.deleteAlbumArt(AbsTagEditorActivity.this, getId()); MusicUtil.deleteAlbumArt(AbsTagEditorActivity.this, getId());
Glide.get(AbsTagEditorActivity.this).clearMemory();
Toast.makeText(AbsTagEditorActivity.this, R.string.tag_editor_restart_notice, Toast.LENGTH_SHORT).show();
} else if (artwork != null) { } else if (artwork != null) {
Glide.get(AbsTagEditorActivity.this).clearMemory(); // AlbumTagEditorActivity already inserts the album cover for us
Toast.makeText(AbsTagEditorActivity.this, R.string.tag_editor_restart_notice, Toast.LENGTH_SHORT).show();
} }
rescanMediaAndQuitOnFinish(); rescanMediaAndQuitOnFinish();
} }

View file

@ -128,8 +128,7 @@ public class AlbumTagEditorActivity extends AbsTagEditorActivity implements Text
@Override @Override
public void onResourceReady(BitmapPaletteWrapper resource, GlideAnimation<? super BitmapPaletteWrapper> glideAnimation) { public void onResourceReady(BitmapPaletteWrapper resource, GlideAnimation<? super BitmapPaletteWrapper> glideAnimation) {
ColorUtil.getColor(resource.getPalette(), Color.TRANSPARENT); albumArtBitmap = getResizedAlbumCover(resource.getBitmap(), 2048);
albumArtBitmap = resource.getBitmap();
setImageBitmap(albumArtBitmap, ColorUtil.getColor(resource.getPalette(), ColorUtil.resolveColor(AlbumTagEditorActivity.this, R.attr.default_bar_color))); setImageBitmap(albumArtBitmap, ColorUtil.getColor(resource.getPalette(), ColorUtil.resolveColor(AlbumTagEditorActivity.this, R.attr.default_bar_color)));
deleteAlbumArt = false; deleteAlbumArt = false;
dataChanged(); dataChanged();
@ -215,7 +214,7 @@ public class AlbumTagEditorActivity extends AbsTagEditorActivity implements Text
.transcode(new BitmapPaletteTranscoder(AlbumTagEditorActivity.this), BitmapPaletteWrapper.class) .transcode(new BitmapPaletteTranscoder(AlbumTagEditorActivity.this), BitmapPaletteWrapper.class)
.diskCacheStrategy(DiskCacheStrategy.NONE) .diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true) .skipMemoryCache(true)
.into(new SimpleTarget<BitmapPaletteWrapper>() { .into(new SimpleTarget<BitmapPaletteWrapper>(4097, 4097) {
@Override @Override
public void onLoadFailed(Exception e, Drawable errorDrawable) { public void onLoadFailed(Exception e, Drawable errorDrawable) {
super.onLoadFailed(e, errorDrawable); super.onLoadFailed(e, errorDrawable);
@ -226,7 +225,7 @@ public class AlbumTagEditorActivity extends AbsTagEditorActivity implements Text
@Override @Override
public void onResourceReady(BitmapPaletteWrapper resource, GlideAnimation<? super BitmapPaletteWrapper> glideAnimation) { public void onResourceReady(BitmapPaletteWrapper resource, GlideAnimation<? super BitmapPaletteWrapper> glideAnimation) {
ColorUtil.getColor(resource.getPalette(), Color.TRANSPARENT); ColorUtil.getColor(resource.getPalette(), Color.TRANSPARENT);
albumArtBitmap = resource.getBitmap(); albumArtBitmap = getResizedAlbumCover(resource.getBitmap(), 2048);
setImageBitmap(albumArtBitmap, ColorUtil.getColor(resource.getPalette(), ColorUtil.resolveColor(AlbumTagEditorActivity.this, R.attr.default_bar_color))); setImageBitmap(albumArtBitmap, ColorUtil.getColor(resource.getPalette(), ColorUtil.resolveColor(AlbumTagEditorActivity.this, R.attr.default_bar_color)));
deleteAlbumArt = false; deleteAlbumArt = false;
dataChanged(); dataChanged();

View file

@ -20,39 +20,14 @@ import com.kabouzeid.gramophone.R;
public class ColorUtil { public class ColorUtil {
public static final int PALETTE_BITMAP_SIZE = 100; public static final int PALETTE_BITMAP_SIZE = 100;
@Deprecated @Nullable
@ColorInt
public static int generateColor(Context context, Bitmap bitmap) {
return getColor(context, generatePalette(bitmap));
}
public static Palette generatePalette(Bitmap bitmap) { public static Palette generatePalette(Bitmap bitmap) {
if (bitmap == null) return null;
return Palette.from(bitmap) return Palette.from(bitmap)
.resizeBitmapSize(PALETTE_BITMAP_SIZE) .resizeBitmapSize(PALETTE_BITMAP_SIZE)
.generate(); .generate();
} }
@Deprecated
@ColorInt
public static int getColor(Context context, @Nullable Palette palette) {
if (palette != null) {
if (palette.getVibrantSwatch() != null) {
return palette.getVibrantSwatch().getRgb();
} else if (palette.getMutedSwatch() != null) {
return palette.getMutedSwatch().getRgb();
} else if (palette.getDarkVibrantSwatch() != null) {
return palette.getDarkVibrantSwatch().getRgb();
} else if (palette.getDarkMutedSwatch() != null) {
return palette.getDarkMutedSwatch().getRgb();
} else if (palette.getLightVibrantSwatch() != null) {
return palette.getLightVibrantSwatch().getRgb();
} else if (palette.getLightMutedSwatch() != null) {
return palette.getLightMutedSwatch().getRgb();
}
}
return ColorUtil.resolveColor(context, R.attr.default_bar_color);
}
@ColorInt @ColorInt
public static int getColor(@Nullable Palette palette, int fallback) { public static int getColor(@Nullable Palette palette, int fallback) {
if (palette != null) { if (palette != null) {