mirror of
https://github.com/Myzel394/Alibi.git
synced 2025-06-18 23:05:26 +02:00
fix: Save audio and video using appropriate file saver
This commit is contained in:
parent
df78952cfb
commit
d1e4b68e33
@ -401,6 +401,8 @@ data class VideoRecorderSettings(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getMimeType() = "video/mp4"
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun getDefaultInstance() = VideoRecorderSettings()
|
fun getDefaultInstance() = VideoRecorderSettings()
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ import app.myzel394.alibi.db.AppSettings
|
|||||||
import app.myzel394.alibi.db.RecordingInformation
|
import app.myzel394.alibi.db.RecordingInformation
|
||||||
import app.myzel394.alibi.helpers.AudioBatchesFolder
|
import app.myzel394.alibi.helpers.AudioBatchesFolder
|
||||||
import app.myzel394.alibi.helpers.BatchesFolder
|
import app.myzel394.alibi.helpers.BatchesFolder
|
||||||
|
import app.myzel394.alibi.helpers.VideoBatchesFolder
|
||||||
import app.myzel394.alibi.services.IntervalRecorderService
|
import app.myzel394.alibi.services.IntervalRecorderService
|
||||||
import app.myzel394.alibi.ui.models.AudioRecorderModel
|
import app.myzel394.alibi.ui.models.AudioRecorderModel
|
||||||
import app.myzel394.alibi.ui.models.BaseRecorderModel
|
import app.myzel394.alibi.ui.models.BaseRecorderModel
|
||||||
@ -50,21 +51,29 @@ fun RecorderEventsHandler(
|
|||||||
var isProcessing by remember { mutableStateOf(false) }
|
var isProcessing by remember { mutableStateOf(false) }
|
||||||
var showRecorderError by remember { mutableStateOf(false) }
|
var showRecorderError by remember { mutableStateOf(false) }
|
||||||
|
|
||||||
val saveFile = rememberFileSaverDialog(
|
val saveAudioFile = rememberFileSaverDialog(settings.audioRecorderSettings.getMimeType()) {
|
||||||
settings.audioRecorderSettings.getMimeType()
|
|
||||||
) {
|
|
||||||
if (settings.deleteRecordingsImmediately) {
|
if (settings.deleteRecordingsImmediately) {
|
||||||
runCatching {
|
runCatching {
|
||||||
audioRecorder.batchesFolder?.deleteRecordings()
|
audioRecorder.batchesFolder?.deleteRecordings()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (audioRecorder.batchesFolder?.hasRecordingsAvailable() == false) {
|
||||||
|
scope.launch {
|
||||||
|
dataStore.updateData {
|
||||||
|
it.setLastRecording(null)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
val saveVideoFile = rememberFileSaverDialog(settings.videoRecorderSettings.getMimeType()) {
|
||||||
|
if (settings.deleteRecordingsImmediately) {
|
||||||
runCatching {
|
runCatching {
|
||||||
videoRecorder.batchesFolder?.deleteRecordings()
|
videoRecorder.batchesFolder?.deleteRecordings()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (audioRecorder.batchesFolder?.hasRecordingsAvailable() == false
|
if (videoRecorder.batchesFolder?.hasRecordingsAvailable() == false) {
|
||||||
&& videoRecorder.batchesFolder?.hasRecordingsAvailable() == false
|
|
||||||
) {
|
|
||||||
scope.launch {
|
scope.launch {
|
||||||
dataStore.updateData {
|
dataStore.updateData {
|
||||||
it.setLastRecording(null)
|
it.setLastRecording(null)
|
||||||
@ -126,7 +135,10 @@ fun RecorderEventsHandler(
|
|||||||
?: settings.lastRecording
|
?: settings.lastRecording
|
||||||
?: throw Exception("No recording information available")
|
?: throw Exception("No recording information available")
|
||||||
val batchesFolder =
|
val batchesFolder =
|
||||||
AudioBatchesFolder.importFromFolder(recording.folderPath, context)
|
if (recorder.javaClass == AudioRecorderModel::class.java)
|
||||||
|
AudioBatchesFolder.importFromFolder(recording.folderPath, context)
|
||||||
|
else
|
||||||
|
VideoBatchesFolder.importFromFolder(recording.folderPath, context)
|
||||||
|
|
||||||
batchesFolder.concatenate(
|
batchesFolder.concatenate(
|
||||||
recording.recordingStart,
|
recording.recordingStart,
|
||||||
@ -141,12 +153,21 @@ fun RecorderEventsHandler(
|
|||||||
|
|
||||||
when (batchesFolder.type) {
|
when (batchesFolder.type) {
|
||||||
BatchesFolder.BatchType.INTERNAL -> {
|
BatchesFolder.BatchType.INTERNAL -> {
|
||||||
saveFile(
|
if (batchesFolder is AudioBatchesFolder) {
|
||||||
batchesFolder.asInternalGetOutputFile(
|
saveAudioFile(
|
||||||
recording.recordingStart,
|
batchesFolder.asInternalGetOutputFile(
|
||||||
recording.fileExtension,
|
recording.recordingStart,
|
||||||
), name
|
recording.fileExtension,
|
||||||
)
|
), name
|
||||||
|
)
|
||||||
|
} else if (batchesFolder is VideoBatchesFolder) {
|
||||||
|
saveVideoFile(
|
||||||
|
batchesFolder.asInternalGetOutputFile(
|
||||||
|
recording.recordingStart,
|
||||||
|
recording.fileExtension,
|
||||||
|
), name
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BatchesFolder.BatchType.CUSTOM -> {
|
BatchesFolder.BatchType.CUSTOM -> {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user