fix: Improve folders

This commit is contained in:
Myzel394 2023-12-31 19:58:50 +01:00
parent b707681a63
commit cb25c1bb90
No known key found for this signature in database
GPG Key ID: 79CC92F37B3E1A2B
2 changed files with 31 additions and 15 deletions

View File

@ -264,6 +264,9 @@ abstract class BatchesFolder(
} }
fun deleteRecordings() { fun deleteRecordings() {
// Currently deletes all recordings.
// This is fine, because we are saving the recordings
// in a dedicated subfolder
when (type) { when (type) {
BatchType.INTERNAL -> getInternalFolder().deleteRecursively() BatchType.INTERNAL -> getInternalFolder().deleteRecursively()
@ -274,11 +277,13 @@ abstract class BatchesFolder(
BatchType.MEDIA -> { BatchType.MEDIA -> {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
// TODO: Also delete pending recordings
context.contentResolver.delete( context.contentResolver.delete(
scopedMediaContentUri, scopedMediaContentUri,
"${MediaStore.MediaColumns.DISPLAY_NAME} LIKE '$mediaPrefix%'", "${MediaStore.MediaColumns.DISPLAY_NAME} LIKE '$mediaPrefix%'",
null, null,
) )
} else { } else {
legacyMediaFolder.deleteRecursively() legacyMediaFolder.deleteRecursively()
} }
@ -337,15 +342,19 @@ abstract class BatchesFolder(
BatchType.MEDIA -> { BatchType.MEDIA -> {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
queryMediaContent { _, counter, uri, _ -> val deletableNames = mutableListOf<String>()
queryMediaContent { rawName, counter, _, _ ->
if (counter < earliestCounter) { if (counter < earliestCounter) {
context.contentResolver.delete( deletableNames.add(rawName)
uri,
null,
null,
)
} }
} }
context.contentResolver.delete(
scopedMediaContentUri,
"${MediaStore.MediaColumns.DISPLAY_NAME} IN (${deletableNames.joinToString(",")})",
null,
)
} else { } else {
legacyMediaFolder.listFiles()?.forEach { legacyMediaFolder.listFiles()?.forEach {
val fileCounter = val fileCounter =

View File

@ -6,13 +6,16 @@ import android.os.Build
import android.os.Environment import android.os.Environment
import android.os.ParcelFileDescriptor import android.os.ParcelFileDescriptor
import android.provider.MediaStore import android.provider.MediaStore
import androidx.core.net.toFile
import androidx.documentfile.provider.DocumentFile import androidx.documentfile.provider.DocumentFile
import app.myzel394.alibi.helpers.MediaConverter.Companion.concatenateVideoFiles import app.myzel394.alibi.helpers.MediaConverter.Companion.concatenateVideoFiles
import app.myzel394.alibi.ui.RECORDER_INTERNAL_SELECTED_VALUE import app.myzel394.alibi.ui.RECORDER_INTERNAL_SELECTED_VALUE
import app.myzel394.alibi.ui.RECORDER_MEDIA_SELECTED_VALUE import app.myzel394.alibi.ui.RECORDER_MEDIA_SELECTED_VALUE
import com.arthenica.ffmpegkit.FFmpegKitConfig import com.arthenica.ffmpegkit.FFmpegKitConfig
import java.io.File import java.io.File
import java.nio.file.Paths
import java.time.LocalDateTime import java.time.LocalDateTime
import kotlin.io.path.Path
class VideoBatchesFolder( class VideoBatchesFolder(
override val context: Context, override val context: Context,
@ -30,7 +33,7 @@ class VideoBatchesFolder(
override val scopedMediaContentUri: Uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI override val scopedMediaContentUri: Uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI
override val legacyMediaFolder = File( override val legacyMediaFolder = File(
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM),
MEDIA_SUBFOLDER MEDIA_RECORDINGS_SUBFOLDER,
) )
private var customParcelFileDescriptor: ParcelFileDescriptor? = null private var customParcelFileDescriptor: ParcelFileDescriptor? = null
@ -56,7 +59,7 @@ class VideoBatchesFolder(
val mediaUri = getOrCreateMediaFile( val mediaUri = getOrCreateMediaFile(
name = getName(date, extension), name = getName(date, extension),
mimeType = "video/$extension", mimeType = "video/$extension",
relativePath = SCOPED_STORAGE_RELATIVE_PATH, relativePath = Environment.DIRECTORY_DCIM + MEDIA_SUBFOLDER,
) )
return FFmpegKitConfig.getSafParameterForWrite( return FFmpegKitConfig.getSafParameterForWrite(
@ -64,12 +67,15 @@ class VideoBatchesFolder(
mediaUri mediaUri
)!! )!!
} else { } else {
return File( return Paths.get(
legacyMediaFolder.parentFile!!, MediaStore.Video.Media.EXTERNAL_CONTENT_URI.path,
Environment.DIRECTORY_DCIM,
MEDIA_SUBFOLDER,
getName(date, extension) getName(date, extension)
).apply { ).toFile()
createNewFile() .apply {
}.absolutePath createNewFile()
}.absolutePath
} }
} }
} }
@ -120,8 +126,9 @@ class VideoBatchesFolder(
) )
} }
val MEDIA_SUBFOLDER = "/alibi/.video_recordings" val MEDIA_SUBFOLDER = "/alibi"
val SCOPED_STORAGE_RELATIVE_PATH = Environment.DIRECTORY_DCIM + MEDIA_SUBFOLDER val MEDIA_RECORDINGS_SUBFOLDER = MEDIA_SUBFOLDER + "/video_recordings"
val SCOPED_STORAGE_RELATIVE_PATH = Environment.DIRECTORY_DCIM + MEDIA_RECORDINGS_SUBFOLDER
// Parameters to be passed in descending order // Parameters to be passed in descending order
// Those parameters first try to concatenate without re-encoding // Those parameters first try to concatenate without re-encoding