move covermodes into cover cache
This commit is contained in:
parent
0bf219e3ba
commit
a6df47be4d
@ -38,10 +38,30 @@ public class CoverCache {
|
||||
* Returned size of large (cover view) album covers
|
||||
*/
|
||||
public final static int SIZE_LARGE = 600;
|
||||
/**
|
||||
* Use all cover providers to load cover art
|
||||
*/
|
||||
public static final int COVER_MODE_ALL = 0xF;
|
||||
/**
|
||||
* Use androids builtin cover mechanism to load covers
|
||||
*/
|
||||
public static final int COVER_MODE_ANDROID = 0x1;
|
||||
/**
|
||||
* Use vanilla musics cover load mechanism
|
||||
*/
|
||||
public static final int COVER_MODE_VANILLA = 0x2;
|
||||
/**
|
||||
* Use vanilla musics SHADOW cover load mechanism
|
||||
*/
|
||||
public static final int COVER_MODE_SHADOW = 0x4;
|
||||
/**
|
||||
* Shared LRU cache class
|
||||
*/
|
||||
private static BitmapLruCache sBitmapLruCache;
|
||||
/**
|
||||
* Bitmask on how we are going to load coverart
|
||||
*/
|
||||
public static int mCoverLoadMode = 0;
|
||||
|
||||
/**
|
||||
* Constructs a new BitmapCache object
|
||||
@ -94,8 +114,10 @@ public class CoverCache {
|
||||
/**
|
||||
* Deletes all items hold in the LRU cache
|
||||
*/
|
||||
public void evictAll() {
|
||||
sBitmapLruCache.evictAll();
|
||||
public static void evictAll() {
|
||||
if (sBitmapLruCache != null) {
|
||||
sBitmapLruCache.evictAll();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -180,7 +202,7 @@ public class CoverCache {
|
||||
InputStream inputStream = null;
|
||||
InputStream sampleInputStream = null; // same as inputStream but used for getSampleSize
|
||||
|
||||
if ((Song.mCoverLoadMode & Song.COVER_MODE_VANILLA) != 0) {
|
||||
if ((CoverCache.mCoverLoadMode & CoverCache.COVER_MODE_VANILLA) != 0) {
|
||||
String basePath = (new File(song.path)).getParentFile().getAbsolutePath(); // parent dir of the currently playing file
|
||||
for (String coverFile: coverNames) {
|
||||
File guessedFile = new File( basePath + "/" + coverFile);
|
||||
@ -192,7 +214,7 @@ public class CoverCache {
|
||||
}
|
||||
}
|
||||
|
||||
if (inputStream == null && (Song.mCoverLoadMode & Song.COVER_MODE_SHADOW) != 0) {
|
||||
if (inputStream == null && (CoverCache.mCoverLoadMode & CoverCache.COVER_MODE_SHADOW) != 0) {
|
||||
String shadowPath = "/sdcard/Music/.vanilla/"+(song.artist.replaceAll("/", "_"))+"/"+(song.album.replaceAll("/", "_"))+".jpg";
|
||||
|
||||
File guessedFile = new File(shadowPath);
|
||||
@ -202,7 +224,7 @@ public class CoverCache {
|
||||
}
|
||||
}
|
||||
|
||||
if (inputStream == null && (Song.mCoverLoadMode & Song.COVER_MODE_ANDROID) != 0 && song.id >= 0) {
|
||||
if (inputStream == null && (CoverCache.mCoverLoadMode & CoverCache.COVER_MODE_ANDROID) != 0 && song.id >= 0) {
|
||||
Uri uri = Uri.parse("content://media/external/audio/media/" + song.id + "/albumart");
|
||||
ContentResolver res = mContext.getContentResolver();
|
||||
inputStream = res.openInputStream(uri);
|
||||
|
@ -926,7 +926,7 @@ public class LibraryActivity
|
||||
cover = song.getCover(this);
|
||||
}
|
||||
|
||||
mCover.setVisibility(Song.mCoverLoadMode == 0 ? View.GONE : View.VISIBLE);
|
||||
mCover.setVisibility(CoverCache.mCoverLoadMode == 0 ? View.GONE : View.VISIBLE);
|
||||
if (cover == null)
|
||||
mCover.setImageResource(R.drawable.fallback_cover);
|
||||
else
|
||||
|
@ -432,9 +432,9 @@ public final class PlaybackService extends Service
|
||||
mScrobble = settings.getBoolean(PrefKeys.SCROBBLE, false);
|
||||
mIdleTimeout = settings.getBoolean(PrefKeys.USE_IDLE_TIMEOUT, false) ? settings.getInt(PrefKeys.IDLE_TIMEOUT, 3600) : 0;
|
||||
|
||||
Song.mCoverLoadMode = settings.getBoolean(PrefKeys.COVERLOADER_ANDROID, true) ? Song.mCoverLoadMode | Song.COVER_MODE_ANDROID : Song.mCoverLoadMode & ~(Song.COVER_MODE_ANDROID);
|
||||
Song.mCoverLoadMode = settings.getBoolean(PrefKeys.COVERLOADER_VANILLA, true) ? Song.mCoverLoadMode | Song.COVER_MODE_VANILLA : Song.mCoverLoadMode & ~(Song.COVER_MODE_VANILLA);
|
||||
Song.mCoverLoadMode = settings.getBoolean(PrefKeys.COVERLOADER_SHADOW , true) ? Song.mCoverLoadMode | Song.COVER_MODE_SHADOW : Song.mCoverLoadMode & ~(Song.COVER_MODE_SHADOW);
|
||||
CoverCache.mCoverLoadMode = settings.getBoolean(PrefKeys.COVERLOADER_ANDROID, true) ? CoverCache.mCoverLoadMode | CoverCache.COVER_MODE_ANDROID : CoverCache.mCoverLoadMode & ~(CoverCache.COVER_MODE_ANDROID);
|
||||
CoverCache.mCoverLoadMode = settings.getBoolean(PrefKeys.COVERLOADER_VANILLA, true) ? CoverCache.mCoverLoadMode | CoverCache.COVER_MODE_VANILLA : CoverCache.mCoverLoadMode & ~(CoverCache.COVER_MODE_VANILLA);
|
||||
CoverCache.mCoverLoadMode = settings.getBoolean(PrefKeys.COVERLOADER_SHADOW , true) ? CoverCache.mCoverLoadMode | CoverCache.COVER_MODE_SHADOW : CoverCache.mCoverLoadMode & ~(CoverCache.COVER_MODE_SHADOW);
|
||||
|
||||
mHeadsetOnly = settings.getBoolean(PrefKeys.HEADSET_ONLY, false);
|
||||
mCycleContinuousShuffling = settings.getBoolean(PrefKeys.CYCLE_CONTINUOUS_SHUFFLING, false);
|
||||
@ -808,14 +808,14 @@ public final class PlaybackService extends Service
|
||||
mIdleTimeout = settings.getBoolean(PrefKeys.USE_IDLE_TIMEOUT, false) ? settings.getInt(PrefKeys.IDLE_TIMEOUT, 3600) : 0;
|
||||
userActionTriggered();
|
||||
} else if (PrefKeys.COVERLOADER_ANDROID.equals(key)) {
|
||||
Song.mCoverLoadMode = settings.getBoolean(PrefKeys.COVERLOADER_ANDROID, true) ? Song.mCoverLoadMode | Song.COVER_MODE_ANDROID : Song.mCoverLoadMode & ~(Song.COVER_MODE_ANDROID);
|
||||
Song.mFlushCoverCache = true;
|
||||
CoverCache.mCoverLoadMode = settings.getBoolean(PrefKeys.COVERLOADER_ANDROID, true) ? CoverCache.mCoverLoadMode | CoverCache.COVER_MODE_ANDROID : CoverCache.mCoverLoadMode & ~(CoverCache.COVER_MODE_ANDROID);
|
||||
CoverCache.evictAll();
|
||||
} else if (PrefKeys.COVERLOADER_VANILLA.equals(key)) {
|
||||
Song.mCoverLoadMode = settings.getBoolean(PrefKeys.COVERLOADER_VANILLA, true) ? Song.mCoverLoadMode | Song.COVER_MODE_VANILLA : Song.mCoverLoadMode & ~(Song.COVER_MODE_VANILLA);
|
||||
Song.mFlushCoverCache = true;
|
||||
CoverCache.mCoverLoadMode = settings.getBoolean(PrefKeys.COVERLOADER_VANILLA, true) ? CoverCache.mCoverLoadMode | CoverCache.COVER_MODE_VANILLA : CoverCache.mCoverLoadMode & ~(CoverCache.COVER_MODE_VANILLA);
|
||||
CoverCache.evictAll();
|
||||
} else if (PrefKeys.COVERLOADER_SHADOW.equals(key)) {
|
||||
Song.mCoverLoadMode = settings.getBoolean(PrefKeys.COVERLOADER_SHADOW, true) ? Song.mCoverLoadMode | Song.COVER_MODE_SHADOW : Song.mCoverLoadMode & ~(Song.COVER_MODE_SHADOW);
|
||||
Song.mFlushCoverCache = true;
|
||||
CoverCache.mCoverLoadMode = settings.getBoolean(PrefKeys.COVERLOADER_SHADOW, true) ? CoverCache.mCoverLoadMode | CoverCache.COVER_MODE_SHADOW : CoverCache.mCoverLoadMode & ~(CoverCache.COVER_MODE_SHADOW);
|
||||
CoverCache.evictAll();
|
||||
} else if (PrefKeys.HEADSET_ONLY.equals(key)) {
|
||||
mHeadsetOnly = settings.getBoolean(key, false);
|
||||
if (mHeadsetOnly && isSpeakerOn())
|
||||
|
@ -44,22 +44,6 @@ public class Song implements Comparable<Song> {
|
||||
* The number of flags.
|
||||
*/
|
||||
public static final int FLAG_COUNT = 2;
|
||||
/**
|
||||
* Use all cover providers to load cover art
|
||||
*/
|
||||
public static final int COVER_MODE_ALL = 0xF;
|
||||
/**
|
||||
* Use androids builtin cover mechanism to load covers
|
||||
*/
|
||||
public static final int COVER_MODE_ANDROID = 0x1;
|
||||
/**
|
||||
* Use vanilla musics cover load mechanism
|
||||
*/
|
||||
public static final int COVER_MODE_VANILLA = 0x2;
|
||||
/**
|
||||
* Use vanilla musics SHADOW cover load mechanism
|
||||
*/
|
||||
public static final int COVER_MODE_SHADOW = 0x4;
|
||||
|
||||
|
||||
public static final String[] EMPTY_PROJECTION = {
|
||||
@ -100,16 +84,6 @@ public class Song implements Comparable<Song> {
|
||||
*/
|
||||
private static CoverCache sCoverCache = null;
|
||||
|
||||
/**
|
||||
* Bitmask on how we are going to load coverart
|
||||
*/
|
||||
public static int mCoverLoadMode = 0;
|
||||
|
||||
/**
|
||||
* We will evict our own cache if set to true
|
||||
*/
|
||||
public static boolean mFlushCoverCache = false;
|
||||
|
||||
/**
|
||||
* Id of this song in the MediaStore
|
||||
*/
|
||||
@ -221,17 +195,12 @@ public class Song implements Comparable<Song> {
|
||||
*/
|
||||
public Bitmap getCover(Context context)
|
||||
{
|
||||
if (mCoverLoadMode == 0 || id == -1 || (flags & FLAG_NO_COVER) != 0)
|
||||
if (CoverCache.mCoverLoadMode == 0 || id == -1 || (flags & FLAG_NO_COVER) != 0)
|
||||
return null;
|
||||
|
||||
if (sCoverCache == null)
|
||||
sCoverCache = new CoverCache(context.getApplicationContext());
|
||||
|
||||
if (mFlushCoverCache) {
|
||||
mFlushCoverCache = false;
|
||||
sCoverCache.evictAll();
|
||||
}
|
||||
|
||||
CoverCache.CoverKey key = new CoverCache.CoverKey(MediaUtils.TYPE_ALBUM, this.albumId, CoverCache.SIZE_LARGE);
|
||||
Bitmap cover = sCoverCache.getCoverFromSong(key, this);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user