fix: Properly save recording

This commit is contained in:
Myzel394 2023-12-17 21:24:12 +01:00
parent df0bb35672
commit 76752e9004
No known key found for this signature in database
GPG Key ID: 79CC92F37B3E1A2B
5 changed files with 84 additions and 78 deletions

View File

@ -263,7 +263,7 @@ data class AudioRecorderSettings(
}
val fileExtension: String
get() = when (outputFormat) {
get() = when (getOutputFormat()) {
MediaRecorder.OutputFormat.AAC_ADTS -> "aac"
MediaRecorder.OutputFormat.THREE_GPP -> "3gp"
MediaRecorder.OutputFormat.MPEG_4 -> "mp4"

View File

@ -54,6 +54,8 @@ class VideoRecorderService :
private lateinit var selectedCamera: CameraSelector
private var enableAudio by Delegates.notNull<Boolean>()
var onCameraControlAvailable = {}
var cameraControl: CameraControl? = null
private set
@ -186,6 +188,7 @@ class VideoRecorderService :
videoCapture
)
cameraControl = CameraControl(camera!!)
onCameraControlAvailable()
_cameraAvailableListener.complete(Unit)
}

View File

@ -1,4 +1,4 @@
package app.myzel394.alibi.ui.components.RecorderScreen.atoms
package app.myzel394.alibi.ui.components.RecorderScreen.organisms
import android.content.Intent
import android.net.Uri
@ -23,6 +23,8 @@ import app.myzel394.alibi.helpers.AudioBatchesFolder
import app.myzel394.alibi.helpers.BatchesFolder
import app.myzel394.alibi.helpers.VideoBatchesFolder
import app.myzel394.alibi.services.IntervalRecorderService
import app.myzel394.alibi.ui.components.RecorderScreen.atoms.RecorderErrorDialog
import app.myzel394.alibi.ui.components.RecorderScreen.atoms.RecorderProcessingDialog
import app.myzel394.alibi.ui.models.AudioRecorderModel
import app.myzel394.alibi.ui.models.BaseRecorderModel
import app.myzel394.alibi.ui.models.VideoRecorderModel
@ -116,15 +118,13 @@ fun RecorderEventsHandler(
}
}
fun saveRecording(recorder: RecorderModel) {
scope.launch {
suspend fun saveRecording(recorder: RecorderModel) {
isProcessing = true
// Give the user some time to see the processing dialog
delay(100)
try {
val recording =
// When new recording created
recorder.recorderService?.getRecordingInformation()
@ -193,7 +193,6 @@ fun RecorderEventsHandler(
isProcessing = false
}
}
}
// Register audio recorder events
DisposableEffect(key1 = audioRecorder, key2 = settings) {
@ -208,12 +207,12 @@ fun RecorderEventsHandler(
saveAsLastRecording(audioRecorder as RecorderModel)
saveRecording(audioRecorder)
}
audioRecorder.destroyService(context)
}
}
}
}
audioRecorder.onError = {
scope.launch {
saveAsLastRecording(audioRecorder as RecorderModel)
@ -241,12 +240,12 @@ fun RecorderEventsHandler(
saveAsLastRecording(videoRecorder as RecorderModel)
saveRecording(videoRecorder)
}
videoRecorder.destroyService(context)
}
}
}
}
videoRecorder.onError = {
scope.launch {
saveAsLastRecording(videoRecorder as RecorderModel)

View File

@ -26,8 +26,8 @@ class VideoRecorderModel :
override val isInRecording: Boolean
get() = super.isInRecording
val isStartingRecording: Boolean
get() = recorderService?.cameraControl == null
var isStartingRecording by mutableStateOf(true)
private set
val cameraSelector: CameraSelector
get() = CameraSelector.Builder().requireLensFacing(cameraID).build()
@ -46,6 +46,10 @@ class VideoRecorderModel :
service.startRecording()
}
service.onCameraControlAvailable = {
isStartingRecording = false
}
recorderState = service.state
recordingTime = service.recordingTime
}

View File

@ -28,7 +28,7 @@ import app.myzel394.alibi.R
import app.myzel394.alibi.dataStore
import app.myzel394.alibi.db.AppSettings
import app.myzel394.alibi.db.RecordingInformation
import app.myzel394.alibi.ui.components.RecorderScreen.atoms.RecorderEventsHandler
import app.myzel394.alibi.ui.components.RecorderScreen.organisms.RecorderEventsHandler
import app.myzel394.alibi.ui.components.RecorderScreen.organisms.VideoRecordingStatus
import app.myzel394.alibi.ui.effects.rememberSettings
import app.myzel394.alibi.ui.models.AudioRecorderModel