Procházet zdrojové kódy

tablet photos cursor fix

Milan Jurkulak před 3 roky
rodič
revize
6033a1c2b4

+ 27 - 3
app/src/main/kotlin/org/mjdev/tvapp/base/helpers/cursor/PhotoItem.kt

@@ -11,14 +11,17 @@ package org.mjdev.tvapp.base.helpers.cursor
 import android.content.ContentResolver
 import android.database.Cursor
 import android.net.Uri
+import android.os.Build
 import android.provider.MediaStore
+import android.util.Size
 import org.mjdev.tvapp.base.extensions.CursorExt.asMap
 import org.mjdev.tvapp.base.interfaces.ItemWithImage
 import org.mjdev.tvapp.base.interfaces.ItemWithTitle
+import timber.log.Timber
 
-@Suppress("UNUSED_PARAMETER", "unused")
+@Suppress( "unused")
 class PhotoItem(
-    contentResolver: ContentResolver,
+    private val contentResolver: ContentResolver,
     c: Cursor
 ) : HashMap<String, Any?>(), ItemWithTitle<String>, ItemWithImage<Any> {
 
@@ -29,8 +32,29 @@ class PhotoItem(
     override val title: String?
         get() = this[MediaStore.Images.Media.TITLE]?.toString()
 
+    val uri: Uri
+        get() = Uri.withAppendedPath(
+            MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
+            this[MediaStore.Images.Media._ID].toString()
+        )
+
     override val image: Any?
-        get() = this[MediaStore.Images.Media.DATA]
+        get() = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
+            try {
+                uri.let { thumbUri ->
+                    contentResolver.loadThumbnail(
+                        thumbUri,
+                        Size(320, 240),
+                        null
+                    )
+                }
+            } catch (e: Exception) {
+                Timber.e(e)
+                null
+            }
+        } else {
+            Uri.parse(this[MediaStore.Images.Media.DATA].toString())
+        }
 
     companion object {
         const val SORT_ORDER_DATE_DESC: String = MediaStore.Images.Media.DATE_ADDED + " DESC"