[Android] Display cover image files in the TV item details
Nicolas Pomepuy
git at videolan.org
Tue Dec 3 17:57:43 UTC 2024
vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Tue Dec 3 11:34:09 2024 +0100| [a2a5b102d7e6a7d5fc865285582411b9336d7279] | committer: Nicolas Pomepuy
Display cover image files in the TV item details
> https://code.videolan.org/videolan/vlc-android/commit/a2a5b102d7e6a7d5fc865285582411b9336d7279
---
.../org/videolan/television/ui/MediaItemDetailsFragment.kt | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/application/television/src/main/java/org/videolan/television/ui/MediaItemDetailsFragment.kt b/application/television/src/main/java/org/videolan/television/ui/MediaItemDetailsFragment.kt
index 85fb0ddf76..e5f16c65e1 100644
--- a/application/television/src/main/java/org/videolan/television/ui/MediaItemDetailsFragment.kt
+++ b/application/television/src/main/java/org/videolan/television/ui/MediaItemDetailsFragment.kt
@@ -23,6 +23,7 @@ package org.videolan.television.ui
import android.annotation.TargetApi
import android.app.Application
import android.content.Intent
+import android.graphics.Bitmap
import android.os.Build
import android.os.Bundle
import android.os.Parcelable
@@ -194,9 +195,10 @@ class MediaItemDetailsFragment : DetailsSupportFragment(), CoroutineScope by Mai
}
}
- private fun loadBackdrop(url: String? = null) {
+ private fun loadBackdrop(url: String? = null, bitmap: Bitmap? = null) {
lifecycleScope.launchWhenStarted {
when {
+ bitmap != null -> UiTools.blurBitmap(bitmap)
!url.isNullOrEmpty() -> HttpImageLoader.downloadBitmap(url)
viewModel.media.type == MediaWrapper.TYPE_AUDIO || viewModel.media.type == MediaWrapper.TYPE_VIDEO -> {
withContext(Dispatchers.IO) {
@@ -390,7 +392,9 @@ class MediaItemDetailsFragment : DetailsSupportFragment(), CoroutineScope by Mai
lifecycleScope.launchWhenStarted {
val cover = if (viewModel.media.type == MediaWrapper.TYPE_AUDIO || viewModel.media.type == MediaWrapper.TYPE_VIDEO)
withContext(Dispatchers.IO) { AudioUtil.readCoverBitmap(viewModel.mediaItemDetails.artworkUrl, 512) }
- else null
+ else if (viewModel.media.type == MediaWrapper.TYPE_ALL) {
+ withContext(Dispatchers.IO) { AudioUtil.fetchCoverBitmap(viewModel.media.uri.toString(), 512) }
+ } else null
val browserFavExists = browserFavRepository.browserFavExists(viewModel.mediaItemDetails.location!!.toUri())
val isDir = viewModel.media.type == MediaWrapper.TYPE_DIR
val canSave = isDir && withContext(Dispatchers.IO) { FileUtils.canSave(viewModel.media) }
@@ -439,6 +443,12 @@ class MediaItemDetailsFragment : DetailsSupportFragment(), CoroutineScope by Mai
//todo reenable entry point when ready
if (BuildConfig.DEBUG) actionsAdapter.set(ID_GET_INFO, Action(ID_GET_INFO.toLong(), res.getString(R.string.find_metadata)))
} else if (viewModel.media.type == MediaWrapper.TYPE_ALL) {
+ if (cover == null) {
+ detailsOverview.imageDrawable = ContextCompat.getDrawable(activity, R.drawable.ic_default_cone)
+ } else {
+ detailsOverview.setImageBitmap(context, cover)
+ loadBackdrop(null, cover)
+ }
if (viewModel.media.uri.retrieveParent() != null) actionsAdapter.set(ID_NAVIGATE_PARENT, Action(ID_NAVIGATE_PARENT.toLong(), res.getString(R.string.go_to_folder)))
}
adapter = rowsAdapter
More information about the Android
mailing list