diff --git a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt
index 428f2a839..c935d5e3b 100644
--- a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt
+++ b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt
@@ -8,6 +8,8 @@ import android.view.WindowInsets
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
import androidx.databinding.DataBindingUtil
+import coil.Coil
+import org.oxycblt.auxio.coil.createImageLoader
import org.oxycblt.auxio.databinding.ActivityMainBinding
import org.oxycblt.auxio.playback.PlaybackService
import org.oxycblt.auxio.settings.SettingsManager
@@ -39,6 +41,8 @@ class MainActivity : AppCompatActivity() {
if (isEdgeOn()) {
doEdgeToEdgeSetup(binding)
}
+
+ Coil.setImageLoader(createImageLoader(applicationContext))
}
override fun onStart() {
diff --git a/app/src/main/java/org/oxycblt/auxio/coil/CoilUtils.kt b/app/src/main/java/org/oxycblt/auxio/coil/CoilUtils.kt
index fb22f9baa..99c9caf43 100644
--- a/app/src/main/java/org/oxycblt/auxio/coil/CoilUtils.kt
+++ b/app/src/main/java/org/oxycblt/auxio/coil/CoilUtils.kt
@@ -3,10 +3,13 @@ package org.oxycblt.auxio.coil
import android.content.Context
import android.graphics.Bitmap
import android.net.Uri
+import android.util.Log
import android.widget.ImageView
import androidx.core.graphics.drawable.toBitmap
import androidx.databinding.BindingAdapter
import coil.Coil
+import coil.ImageLoader
+import coil.request.CachePolicy
import coil.request.ImageRequest
import org.oxycblt.auxio.R
import org.oxycblt.auxio.logE
@@ -24,6 +27,25 @@ val settingsManager: SettingsManager by lazy {
SettingsManager.getInstance()
}
+/**
+ * Create the custom [ImageLoader] used by Auxio, which doesn't cache album art to the disk by default.
+ */
+fun createImageLoader(context: Context): ImageLoader {
+ Log.d("createImageLoader", "Creating image loader.")
+
+ val builder = ImageLoader.Builder(context)
+ .crossfade(true)
+
+ // To save memory/improve speed, allow disc caching when if quality covers are enabled.
+ if (settingsManager.useQualityCovers) {
+ builder.diskCachePolicy(CachePolicy.ENABLED)
+ } else {
+ builder.diskCachePolicy(CachePolicy.DISABLED)
+ }
+
+ return builder.build()
+}
+
/**
* Get a bitmap for a song. onDone will be called when the bitmap is loaded.
* **Do not use this on the UI elements, instead use the Binding Adapters.**
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index f44636b4e..4a73c0ce3 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -68,7 +68,7 @@
Turn off to save memory usage
Ignore MediaStore covers
- Results in higher quality album covers, but causes slower loading times
+ Results in higher quality album covers at the cost of slower loading times and higher memory usage
Use alternate notification action
Prefer repeat mode action