diff --git a/android/app/src/main/java/com/audiobookshelf/app/player/AbMediaDescriptionAdapter.kt b/android/app/src/main/java/com/audiobookshelf/app/player/AbMediaDescriptionAdapter.kt index b3117b77..653bb38c 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/player/AbMediaDescriptionAdapter.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/player/AbMediaDescriptionAdapter.kt @@ -5,6 +5,9 @@ import android.graphics.Bitmap import android.net.Uri import android.support.v4.media.session.MediaControllerCompat import android.util.Log +import androidx.documentfile.provider.DocumentFile +import com.anggrayudi.storage.file.getAbsolutePath +import com.anggrayudi.storage.file.toRawFile import com.audiobookshelf.app.R import com.bumptech.glide.Glide import com.bumptech.glide.load.engine.DiskCacheStrategy @@ -60,10 +63,25 @@ class AbMediaDescriptionAdapter constructor(private val controller: MediaControl private suspend fun resolveUriAsBitmap(uri: Uri): Bitmap? { return withContext(Dispatchers.IO) { // Block on downloading artwork. + val context = playerNotificationService.getContext() + + // Fix attempt for #35 local cover crashing + // Convert content uri to a file and pass to Glide + var urival:Any = uri + if (uri.toString().startsWith("content:")) { + val imageDocFile = DocumentFile.fromSingleUri(context, uri) + Log.d(tag, "Converting local content url $uri to file with path ${imageDocFile?.getAbsolutePath(context)}") + val file = imageDocFile?.toRawFile(context) + file?.let { + Log.d(tag, "Using local file image instead of content uri ${it.absolutePath}") + urival = it + } + } + try { - Glide.with(playerNotificationService).applyDefaultRequestOptions(glideOptions) + Glide.with(context).applyDefaultRequestOptions(glideOptions) .asBitmap() - .load(uri) + .load(urival) .placeholder(R.drawable.icon) .error(R.drawable.icon) .submit(NOTIFICATION_LARGE_ICON_SIZE, NOTIFICATION_LARGE_ICON_SIZE) @@ -71,7 +89,7 @@ class AbMediaDescriptionAdapter constructor(private val controller: MediaControl } catch (e: Exception) { e.printStackTrace() - Glide.with(playerNotificationService).applyDefaultRequestOptions(glideOptions) + Glide.with(context).applyDefaultRequestOptions(glideOptions) .asBitmap() .load(Uri.parse("android.resource://com.audiobookshelf.app/" + R.drawable.icon)) .submit(NOTIFICATION_LARGE_ICON_SIZE, NOTIFICATION_LARGE_ICON_SIZE) diff --git a/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt b/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt index 24bc94ed..ea98d963 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt @@ -539,6 +539,10 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { return if(currentPlayer == castPlayer) "cast-player" else "exo-player" } + fun getContext():Context { + return ctx + } + // // MEDIA BROWSER STUFF (ANDROID AUTO) //