From d2afefe59563063284d8f36c58ccb5c62b4851af Mon Sep 17 00:00:00 2001 From: dkanada Date: Thu, 13 May 2021 19:19:39 +0900 Subject: [PATCH] add internal preference for custom storage locations --- .../gramophone/glide/CustomGlideModule.java | 2 +- .../gramophone/service/DownloadService.java | 5 ++- .../service/playback/LocalPlayer.java | 2 +- .../dkanada/gramophone/util/MusicUtil.java | 2 +- .../gramophone/util/PreferenceUtil.java | 38 ++++++++----------- 5 files changed, 23 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/com/dkanada/gramophone/glide/CustomGlideModule.java b/app/src/main/java/com/dkanada/gramophone/glide/CustomGlideModule.java index c01eb1a5..39d14b14 100644 --- a/app/src/main/java/com/dkanada/gramophone/glide/CustomGlideModule.java +++ b/app/src/main/java/com/dkanada/gramophone/glide/CustomGlideModule.java @@ -23,7 +23,7 @@ import java.io.File; public class CustomGlideModule extends AppGlideModule { @Override public void applyOptions(@NonNull Context context, GlideBuilder builder) { - File cacheDir = new File(context.getCacheDir(), "glide"); + File cacheDir = new File(PreferenceUtil.getInstance(context).getLocationCache(), "glide"); int size = PreferenceUtil.getInstance(context).getImageCacheSize(); builder.setDiskCache(new DiskLruCacheFactory(() -> cacheDir, size)); diff --git a/app/src/main/java/com/dkanada/gramophone/service/DownloadService.java b/app/src/main/java/com/dkanada/gramophone/service/DownloadService.java index 4d2f6fa9..303c8c98 100644 --- a/app/src/main/java/com/dkanada/gramophone/service/DownloadService.java +++ b/app/src/main/java/com/dkanada/gramophone/service/DownloadService.java @@ -11,6 +11,7 @@ import com.dkanada.gramophone.BuildConfig; import com.dkanada.gramophone.database.Cache; import com.dkanada.gramophone.model.Song; import com.dkanada.gramophone.util.MusicUtil; +import com.dkanada.gramophone.util.PreferenceUtil; import java.io.File; import java.io.FileInputStream; @@ -51,7 +52,9 @@ public class DownloadService extends Service { try { URL url = new URL(MusicUtil.getDownloadUri(song)); URLConnection connection = url.openConnection(); - File download = new File(getCacheDir(), "download/" + song.id); + + String cache = PreferenceUtil.getInstance(App.getInstance()).getLocationCache(); + File download = new File(cache, "download/" + song.id); File audio = new File(MusicUtil.getFileUri(song)); download.getParentFile().mkdirs(); diff --git a/app/src/main/java/com/dkanada/gramophone/service/playback/LocalPlayer.java b/app/src/main/java/com/dkanada/gramophone/service/playback/LocalPlayer.java index 2397d87d..c20639da 100644 --- a/app/src/main/java/com/dkanada/gramophone/service/playback/LocalPlayer.java +++ b/app/src/main/java/com/dkanada/gramophone/service/playback/LocalPlayer.java @@ -90,7 +90,7 @@ public class LocalPlayer implements Playback { LeastRecentlyUsedCacheEvictor recentlyUsedCache = new LeastRecentlyUsedCacheEvictor(cacheSize); ExoDatabaseProvider databaseProvider = new ExoDatabaseProvider(context); - File cacheDirectory = new File(context.getCacheDir(), "exoplayer"); + File cacheDirectory = new File(PreferenceUtil.getInstance(context).getLocationCache(), "exoplayer"); simpleCache = new SimpleCache(cacheDirectory, recentlyUsedCache, databaseProvider); } diff --git a/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java b/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java index c76e9cf2..e7e809f1 100644 --- a/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java +++ b/app/src/main/java/com/dkanada/gramophone/util/MusicUtil.java @@ -84,7 +84,7 @@ public class MusicUtil { } public static String getFileUri(Song song) { - File root = new File(App.getInstance().getCacheDir(), "music"); + File root = new File(PreferenceUtil.getInstance(App.getInstance()).getLocationDownload(), "music"); String path = "/" + song.artistName + "/" + song.albumName + "/"; String name = song.discNumber + "." + song.trackNumber + " - " + song.title + "." + song.container; diff --git a/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java b/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java index 607941cb..ef6c6e9c 100644 --- a/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java +++ b/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java @@ -81,23 +81,27 @@ public final class PreferenceUtil { public static final String REMEMBER_SHUFFLE = "remember_shuffle"; public static final String REMEMBER_QUEUE = "remember_queue"; + public static final String LOCATION_DOWNLOAD = "location_download"; + public static final String LOCATION_CACHE = "location_cache"; public static final String IMAGE_CACHE_SIZE = "image_cache_size"; public static final String MEDIA_CACHE_SIZE = "media_cache_size"; - private static PreferenceUtil sInstance; + private static PreferenceUtil instance; private final SharedPreferences mPreferences; + private final Context mContext; private PreferenceUtil(final Context context) { mPreferences = PreferenceManager.getDefaultSharedPreferences(context); + mContext = context; } public static PreferenceUtil getInstance(final Context context) { - if (sInstance == null) { - sInstance = new PreferenceUtil(context.getApplicationContext()); + if (instance == null) { + instance = new PreferenceUtil(context.getApplicationContext()); } - return sInstance; + return instance; } public void registerOnSharedPreferenceChangedListener(SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener) { @@ -163,32 +167,14 @@ public final class PreferenceUtil { return mPreferences.getBoolean(COLORED_NOTIFICATION, true); } - public void setColoredNotification(final boolean value) { - final SharedPreferences.Editor editor = mPreferences.edit(); - editor.putBoolean(COLORED_NOTIFICATION, value); - editor.apply(); - } - public final boolean getClassicNotification() { return mPreferences.getBoolean(CLASSIC_NOTIFICATION, Build.VERSION.SDK_INT <= Build.VERSION_CODES.O); } - public void setClassicNotification(final boolean value) { - final SharedPreferences.Editor editor = mPreferences.edit(); - editor.putBoolean(CLASSIC_NOTIFICATION, value); - editor.apply(); - } - public final boolean getColoredShortcuts() { return mPreferences.getBoolean(COLORED_SHORTCUTS, true); } - public void setColoredShortcuts(final boolean value) { - final SharedPreferences.Editor editor = mPreferences.edit(); - editor.putBoolean(COLORED_SHORTCUTS, value); - editor.apply(); - } - public final String getTranscodeCodec() { return mPreferences.getString(TRANSCODE_CODEC, "aac"); } @@ -387,6 +373,14 @@ public final class PreferenceUtil { editor.apply(); } + public final String getLocationDownload() { + return mPreferences.getString(LOCATION_DOWNLOAD, mContext.getCacheDir().toString()); + } + + public final String getLocationCache() { + return mPreferences.getString(LOCATION_CACHE, mContext.getCacheDir().toString()); + } + public final int getImageCacheSize() { return Integer.parseInt(mPreferences.getString(IMAGE_CACHE_SIZE, "400000000")); }