[Android] Feedback: include medialibrary folder and database sizes

Nicolas Pomepuy git at videolan.org
Wed Sep 9 07:23:26 UTC 2026


vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Fri Jul 24 09:50:35 2026 +0200| [dae55d7cc71573319e80d4035b1794b641f0e9d0] | committer: Duncan McNamara

Feedback: include medialibrary folder and database sizes

> https://code.videolan.org/videolan/vlc-android/commit/dae55d7cc71573319e80d4035b1794b641f0e9d0
---

 .../org/videolan/vlc/gui/helpers/FeedbackUtil.kt    | 15 +++++++++++++++
 .../src/org/videolan/vlc/util/FileUtils.kt          | 21 +++++++++++++++++++++
 .../test/org/videolan/vlc/util/UtilTests.kt         | 21 +++++++++++++++++++++
 3 files changed, 57 insertions(+)

diff --git a/application/vlc-android/src/org/videolan/vlc/gui/helpers/FeedbackUtil.kt b/application/vlc-android/src/org/videolan/vlc/gui/helpers/FeedbackUtil.kt
index 9e2b802e73..3c658a2cd6 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/helpers/FeedbackUtil.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/helpers/FeedbackUtil.kt
@@ -28,6 +28,7 @@ import android.content.Context
 import android.content.Intent
 import android.net.Uri
 import android.os.Build
+import android.text.format.Formatter
 import android.util.Log
 import androidx.core.content.FileProvider
 import androidx.core.text.HtmlCompat
@@ -127,6 +128,20 @@ object FeedbackUtil {
         append("Android version: ${Build.VERSION.SDK_INT}\r\n")
         append("System name: ${Build.DISPLAY}\r\n")
         append("Device Model: ${Build.MANUFACTURER} - ${Build.MODEL}\r\n")
+        context.getExternalFilesDir(null)?.let {
+            val medialibFolder = File(it.absolutePath + Medialibrary.MEDIALIB_FOLDER_NAME)
+            if (medialibFolder.exists()) {
+                append("Medialibrary external folder size: ${Formatter.formatFileSize(context, FileUtils.getFolderSize(medialibFolder))}\r\n")
+            }
+            val thumbsFolder = File(medialibFolder, "thumbnails")
+            if (thumbsFolder.exists()) {
+                append("Thumbnails size: ${Formatter.formatFileSize(context, FileUtils.getFolderSize(thumbsFolder))}\r\n")
+            }
+        }
+        val dbFile = File(context.getDir("db", Context.MODE_PRIVATE).absolutePath + Medialibrary.VLC_MEDIA_DB_NAME)
+        if (dbFile.exists()) {
+            append("Medialibrary database size: ${Formatter.formatFileSize(context, dbFile.length())}\r\n")
+        }
         append("____________________________\r\n")
         append("Permissions\r\n")
         append("____________________________\r\n")
diff --git a/application/vlc-android/src/org/videolan/vlc/util/FileUtils.kt b/application/vlc-android/src/org/videolan/vlc/util/FileUtils.kt
index d2ebbcd547..72a581174c 100644
--- a/application/vlc-android/src/org/videolan/vlc/util/FileUtils.kt
+++ b/application/vlc-android/src/org/videolan/vlc/util/FileUtils.kt
@@ -594,6 +594,27 @@ object FileUtils {
     }
 
     fun getSoundFontExtensions() = arrayOf("sf2", "sf3")
+
+    /**
+     * Get the size of a folder (recursively) or a file.
+     *
+     * @param file the folder or file to measure
+     * @return the size in bytes
+     */
+    fun getFolderSize(file: File): Long {
+        var size: Long = 0
+        if (file.isDirectory) {
+            val files = file.listFiles()
+            if (files != null) {
+                for (f in files) {
+                    size += getFolderSize(f)
+                }
+            }
+        } else {
+            size = file.length()
+        }
+        return size
+    }
 }
 
 fun String?.getParentFolder(): String? {
diff --git a/application/vlc-android/test/org/videolan/vlc/util/UtilTests.kt b/application/vlc-android/test/org/videolan/vlc/util/UtilTests.kt
index 0c7f3094cb..11ff71db37 100644
--- a/application/vlc-android/test/org/videolan/vlc/util/UtilTests.kt
+++ b/application/vlc-android/test/org/videolan/vlc/util/UtilTests.kt
@@ -4,11 +4,32 @@ import org.junit.Assert
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
+import java.io.File
 import java.util.Comparator
 
 @RunWith(JUnit4::class)
 class ExtensionsTests {
 
+    @Test
+    fun getFolderSize() {
+        val tempDir = File.createTempFile("test", "dir")
+        tempDir.delete()
+        tempDir.mkdir()
+        val file1 = File(tempDir, "file1")
+        file1.writeText("12345") // 5 bytes
+        val subDir = File(tempDir, "subdir")
+        subDir.mkdir()
+        val file2 = File(subDir, "file2")
+        file2.writeText("1234567890") // 10 bytes
+        
+        Assert.assertEquals(15L, FileUtils.getFolderSize(tempDir))
+        
+        file1.delete()
+        file2.delete()
+        subDir.delete()
+        tempDir.delete()
+    }
+
     @Test
     fun getResolutionClass() {
         Assert.assertEquals("720p", generateResolutionClass(1280, 536))



More information about the Android mailing list