[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