It depends on what MediaStore has indexed
You can further refine the search by modifying the query
You can also check the images by asking "android.provider.MediaStore.Images$Media" and "android.provider.MediaStore.Images.Thumbnails", modifying with "mime_type LIKE 'image/%'"
You can further refine the search by modifying the query
You can also check the images by asking "android.provider.MediaStore.Images$Media" and "android.provider.MediaStore.Images.Thumbnails", modifying with "mime_type LIKE 'image/%'"
B4X:
Sub GetBitmapsOfVideoThumbnails
Dim MediaStore As JavaObject
Dim uri As Object
Dim MediaStore_Video_Thumbnails As JavaObject
MediaStore.InitializeStatic("android.provider.MediaStore.Video$Media")
uri = MediaStore.GetField("EXTERNAL_CONTENT_URI") 'content://media/external/images/media for images, content://media/external/video/media fo videos
MediaStore_Video_Thumbnails.InitializeStatic("android.provider.MediaStore.Video.Thumbnails")
Dim cr As ContentResolver 'ContentResolver library
cr.Initialize("cr")
Dim thumbCursor As Cursor 'SQL lib
thumbCursor = cr.Query(uri, Null, "mime_type LIKE 'video/%'", Null, Null) 'LIMIT not work on android 11+
Log("thumbCursor.RowCount = " & thumbCursor.RowCount)
If thumbCursor <> Null And thumbCursor.RowCount > 0 Then
For i = 0 To thumbCursor.RowCount - 1
thumbCursor.Position = i
Private videoId As Long = thumbCursor.GetString("_id")
Log(videoId)
LogColor(uri & "/" & videoId, Colors.Blue)
Log(thumbCursor.GetString("_data"))
'Option with MediaStore.Video.Thumbnails.getThumbnail(...):
Dim r As Reflector
Dim cres As Object
r.Target = r.GetContext
cres = r.RunMethod("getContentResolver")
Private bm As Bitmap = MediaStore_Video_Thumbnails.RunMethod("getThumbnail", Array As Object(cres, videoId, 3, Null)) '3 = MICRO_KIND 1 = MINI_KIND
Log(bm.Width & " x " & bm.Height)
'Option with ContentResolver.loadThumbnail(...):
Dim SizeObj As JavaObject
Dim size As JavaObject = SizeObj.InitializeNewInstance("android.util.Size", Array As Object(96, 96))
Log(size)
Dim uri2 As JavaObject
Dim u As JavaObject = uri2.InitializeStatic("android.net.Uri").RunMethod("parse", Array As String(uri & "/" & videoId))
LogColor(u, Colors.Magenta)
Dim csign As JavaObject
Dim cs As JavaObject = csign.InitializeNewInstance("android.os.CancellationSignal", Null)
Log(cs)
Dim ctxt As JavaObject
Dim ContentResolver As JavaObject = ctxt.InitializeContext.RunMethodJO("getContentResolver", Null) 'https://www.b4x.com/android/forum/threads/saveas-let-the-user-select-a-target-folder-list-of-other-related-methods.129897/#content
Dim Thumbnail As Bitmap
Thumbnail = ContentResolver.RunMethod("loadThumbnail", Array(u, size, csign))
Log(Thumbnail.Width & " xx " & Thumbnail.Height)
Next
End If
thumbCursor.Close
End Sub
Last edited: