mirror of
https://github.com/Myzel394/Alibi.git
synced 2025-06-19 07:15:25 +02:00
fix: Properly save recording
This commit is contained in:
parent
df0bb35672
commit
76752e9004
@ -263,7 +263,7 @@ data class AudioRecorderSettings(
|
|||||||
}
|
}
|
||||||
|
|
||||||
val fileExtension: String
|
val fileExtension: String
|
||||||
get() = when (outputFormat) {
|
get() = when (getOutputFormat()) {
|
||||||
MediaRecorder.OutputFormat.AAC_ADTS -> "aac"
|
MediaRecorder.OutputFormat.AAC_ADTS -> "aac"
|
||||||
MediaRecorder.OutputFormat.THREE_GPP -> "3gp"
|
MediaRecorder.OutputFormat.THREE_GPP -> "3gp"
|
||||||
MediaRecorder.OutputFormat.MPEG_4 -> "mp4"
|
MediaRecorder.OutputFormat.MPEG_4 -> "mp4"
|
||||||
|
@ -54,6 +54,8 @@ class VideoRecorderService :
|
|||||||
private lateinit var selectedCamera: CameraSelector
|
private lateinit var selectedCamera: CameraSelector
|
||||||
private var enableAudio by Delegates.notNull<Boolean>()
|
private var enableAudio by Delegates.notNull<Boolean>()
|
||||||
|
|
||||||
|
var onCameraControlAvailable = {}
|
||||||
|
|
||||||
var cameraControl: CameraControl? = null
|
var cameraControl: CameraControl? = null
|
||||||
private set
|
private set
|
||||||
|
|
||||||
@ -186,6 +188,7 @@ class VideoRecorderService :
|
|||||||
videoCapture
|
videoCapture
|
||||||
)
|
)
|
||||||
cameraControl = CameraControl(camera!!)
|
cameraControl = CameraControl(camera!!)
|
||||||
|
onCameraControlAvailable()
|
||||||
|
|
||||||
_cameraAvailableListener.complete(Unit)
|
_cameraAvailableListener.complete(Unit)
|
||||||
}
|
}
|
||||||
|
@ -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.content.Intent
|
||||||
import android.net.Uri
|
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.BatchesFolder
|
||||||
import app.myzel394.alibi.helpers.VideoBatchesFolder
|
import app.myzel394.alibi.helpers.VideoBatchesFolder
|
||||||
import app.myzel394.alibi.services.IntervalRecorderService
|
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.AudioRecorderModel
|
||||||
import app.myzel394.alibi.ui.models.BaseRecorderModel
|
import app.myzel394.alibi.ui.models.BaseRecorderModel
|
||||||
import app.myzel394.alibi.ui.models.VideoRecorderModel
|
import app.myzel394.alibi.ui.models.VideoRecorderModel
|
||||||
@ -116,15 +118,13 @@ fun RecorderEventsHandler(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun saveRecording(recorder: RecorderModel) {
|
suspend fun saveRecording(recorder: RecorderModel) {
|
||||||
scope.launch {
|
|
||||||
isProcessing = true
|
isProcessing = true
|
||||||
|
|
||||||
// Give the user some time to see the processing dialog
|
// Give the user some time to see the processing dialog
|
||||||
delay(100)
|
delay(100)
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
val recording =
|
val recording =
|
||||||
// When new recording created
|
// When new recording created
|
||||||
recorder.recorderService?.getRecordingInformation()
|
recorder.recorderService?.getRecordingInformation()
|
||||||
@ -193,7 +193,6 @@ fun RecorderEventsHandler(
|
|||||||
isProcessing = false
|
isProcessing = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Register audio recorder events
|
// Register audio recorder events
|
||||||
DisposableEffect(key1 = audioRecorder, key2 = settings) {
|
DisposableEffect(key1 = audioRecorder, key2 = settings) {
|
||||||
@ -208,12 +207,12 @@ fun RecorderEventsHandler(
|
|||||||
saveAsLastRecording(audioRecorder as RecorderModel)
|
saveAsLastRecording(audioRecorder as RecorderModel)
|
||||||
|
|
||||||
saveRecording(audioRecorder)
|
saveRecording(audioRecorder)
|
||||||
}
|
|
||||||
|
|
||||||
audioRecorder.destroyService(context)
|
audioRecorder.destroyService(context)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
audioRecorder.onError = {
|
audioRecorder.onError = {
|
||||||
scope.launch {
|
scope.launch {
|
||||||
saveAsLastRecording(audioRecorder as RecorderModel)
|
saveAsLastRecording(audioRecorder as RecorderModel)
|
||||||
@ -241,12 +240,12 @@ fun RecorderEventsHandler(
|
|||||||
saveAsLastRecording(videoRecorder as RecorderModel)
|
saveAsLastRecording(videoRecorder as RecorderModel)
|
||||||
|
|
||||||
saveRecording(videoRecorder)
|
saveRecording(videoRecorder)
|
||||||
}
|
|
||||||
|
|
||||||
videoRecorder.destroyService(context)
|
videoRecorder.destroyService(context)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
videoRecorder.onError = {
|
videoRecorder.onError = {
|
||||||
scope.launch {
|
scope.launch {
|
||||||
saveAsLastRecording(videoRecorder as RecorderModel)
|
saveAsLastRecording(videoRecorder as RecorderModel)
|
@ -26,8 +26,8 @@ class VideoRecorderModel :
|
|||||||
override val isInRecording: Boolean
|
override val isInRecording: Boolean
|
||||||
get() = super.isInRecording
|
get() = super.isInRecording
|
||||||
|
|
||||||
val isStartingRecording: Boolean
|
var isStartingRecording by mutableStateOf(true)
|
||||||
get() = recorderService?.cameraControl == null
|
private set
|
||||||
|
|
||||||
val cameraSelector: CameraSelector
|
val cameraSelector: CameraSelector
|
||||||
get() = CameraSelector.Builder().requireLensFacing(cameraID).build()
|
get() = CameraSelector.Builder().requireLensFacing(cameraID).build()
|
||||||
@ -46,6 +46,10 @@ class VideoRecorderModel :
|
|||||||
service.startRecording()
|
service.startRecording()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
service.onCameraControlAvailable = {
|
||||||
|
isStartingRecording = false
|
||||||
|
}
|
||||||
|
|
||||||
recorderState = service.state
|
recorderState = service.state
|
||||||
recordingTime = service.recordingTime
|
recordingTime = service.recordingTime
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ import app.myzel394.alibi.R
|
|||||||
import app.myzel394.alibi.dataStore
|
import app.myzel394.alibi.dataStore
|
||||||
import app.myzel394.alibi.db.AppSettings
|
import app.myzel394.alibi.db.AppSettings
|
||||||
import app.myzel394.alibi.db.RecordingInformation
|
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.components.RecorderScreen.organisms.VideoRecordingStatus
|
||||||
import app.myzel394.alibi.ui.effects.rememberSettings
|
import app.myzel394.alibi.ui.effects.rememberSettings
|
||||||
import app.myzel394.alibi.ui.models.AudioRecorderModel
|
import app.myzel394.alibi.ui.models.AudioRecorderModel
|
||||||
|
Loading…
x
Reference in New Issue
Block a user