diff --git a/app/src/main/java/app/myzel394/alibi/helpers/AudioRecorderExporter.kt b/app/src/main/java/app/myzel394/alibi/helpers/AudioRecorderExporter.kt index 8ef3d4e..9662199 100644 --- a/app/src/main/java/app/myzel394/alibi/helpers/AudioRecorderExporter.kt +++ b/app/src/main/java/app/myzel394/alibi/helpers/AudioRecorderExporter.kt @@ -4,11 +4,13 @@ import android.content.Context import android.net.Uri import android.system.Os import android.util.Log +import androidx.core.content.ContentProviderCompat.requireContext import androidx.core.net.toUri import androidx.documentfile.provider.DocumentFile import app.myzel394.alibi.db.RecordingInformation import app.myzel394.alibi.ui.RECORDER_SUBFOLDER_NAME import com.arthenica.ffmpegkit.FFmpegKit +import com.arthenica.ffmpegkit.FFmpegKitConfig import com.arthenica.ffmpegkit.ReturnCode import java.io.File import java.time.format.DateTimeFormatter @@ -52,12 +54,17 @@ data class AudioRecorderExporter( suspend fun concatenateFiles( context: Context, + uri: Uri, forceConcatenation: Boolean = false, ): File { val filePaths = getFilePaths(context) val paths = filePaths.joinToString("|") { it.path } + val filePath = FFmpegKitConfig.getSafParameter(context, uri, "rw") + println("!!!!!!!!!!!!!!!!!!1") + println(getFolder(context).listFiles()?.map { it.name }) + println(filePath) val fileName = recording.recordingStart .format(DateTimeFormatter.ISO_DATE_TIME) .toString() @@ -69,7 +76,8 @@ data class AudioRecorderExporter( return outputFile } - val command = "-i 'concat:$paths' -y" + + val command = "-protocol_whitelist saf,concat,content,file,subfile " + + "-i 'concat:${filePath}' -y" + " -acodec copy" + " -metadata title='$fileName' " + " -metadata date='${recording.recordingStart.format(DateTimeFormatter.ISO_DATE_TIME)}'" + @@ -78,6 +86,10 @@ data class AudioRecorderExporter( " -metadata max_duration='${recording.maxDuration}'" + " $outputFile" + println("--------------------") + println(command) + println(outputFile) + val session = FFmpegKit.execute(command) if (!ReturnCode.isSuccess(session.returnCode)) { diff --git a/app/src/main/java/app/myzel394/alibi/ui/screens/AudioRecorderScreen.kt b/app/src/main/java/app/myzel394/alibi/ui/screens/AudioRecorderScreen.kt index 54a370c..a8b90c1 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/screens/AudioRecorderScreen.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/screens/AudioRecorderScreen.kt @@ -108,7 +108,13 @@ fun AudioRecorderScreen( audioRecorder.recorderService?.getRecordingInformation() ?: settings.lastRecording ?: throw Exception("No recording information available"), - ).concatenateFiles(context) + ).concatenateFiles( + context, + DocumentFile.fromTreeUri( + context, + settings.audioRecorderSettings.saveFolder!!.toUri(), + )!!.findFile("1.aac")!!.uri, + ) saveFile(file, file.name) } catch (error: Exception) {