diff --git a/app/src/main/java/app/myzel394/alibi/services/IntervalRecorderService.kt b/app/src/main/java/app/myzel394/alibi/services/IntervalRecorderService.kt index 7fb46f3..35139b2 100644 --- a/app/src/main/java/app/myzel394/alibi/services/IntervalRecorderService.kt +++ b/app/src/main/java/app/myzel394/alibi/services/IntervalRecorderService.kt @@ -38,6 +38,7 @@ abstract class IntervalRecorderService } override fun start() { + super.start() batchesFolder.initFolders() if (!batchesFolder.checkIfFolderIsAccessible()) { onCustomOutputFolderNotAccessible() @@ -48,10 +49,12 @@ abstract class IntervalRecorderService } override fun pause() { + super.pause() cycleTimer.shutdown() } override fun resume() { + super.resume() createTimer() } diff --git a/app/src/main/java/app/myzel394/alibi/services/RecorderService.kt b/app/src/main/java/app/myzel394/alibi/services/RecorderService.kt index 146dc65..cb55177 100644 --- a/app/src/main/java/app/myzel394/alibi/services/RecorderService.kt +++ b/app/src/main/java/app/myzel394/alibi/services/RecorderService.kt @@ -39,21 +39,27 @@ abstract class RecorderService : LifecycleService() { var recordingTime = 0L private set - protected abstract fun start() - - protected abstract fun pause() - - // TODO: Move pause / recording here - protected abstract fun resume() - protected open suspend fun stop() { + protected open fun start() { + createRecordingTimeTimer() } - override fun onDestroy() { + protected open fun pause() { + isPaused = true + + recordingTimeTimer.shutdown() + } + + protected open fun resume() { + createRecordingTimeTimer() + } + + protected open suspend fun stop() { + recordingTimeTimer.shutdown() + NotificationManagerCompat.from(this) .cancel(NotificationHelper.RECORDER_CHANNEL_NOTIFICATION_ID) stopForeground(STOP_FOREGROUND_REMOVE) stopSelf() - super.onDestroy() } protected abstract fun startForegroundService() @@ -141,20 +147,9 @@ abstract class RecorderService : LifecycleService() { isPaused = false } // `start` is handled by `startRecording` - - createRecordingTimeTimer() } - RecorderState.PAUSED -> { - isPaused = true - - recordingTimeTimer.shutdown() - pause() - } - - RecorderState.STOPPED -> { - recordingTimeTimer.shutdown() - } + RecorderState.PAUSED -> pause() else -> {} } diff --git a/app/src/main/java/app/myzel394/alibi/services/VideoRecorderService.kt b/app/src/main/java/app/myzel394/alibi/services/VideoRecorderService.kt index 92645e8..2607720 100644 --- a/app/src/main/java/app/myzel394/alibi/services/VideoRecorderService.kt +++ b/app/src/main/java/app/myzel394/alibi/services/VideoRecorderService.kt @@ -33,8 +33,6 @@ import kotlinx.coroutines.withContext import kotlinx.coroutines.withTimeoutOrNull import kotlin.properties.Delegates -const val CAMERA_CLOSE_TIMEOUT = 20000L - class VideoRecorderService : IntervalRecorderService() { override var batchesFolder: BatchesFolder = VideoBatchesFolder.viaInternalFolder(this) @@ -238,7 +236,10 @@ class VideoRecorderService : type = RecordingInformation.Type.VIDEO, ) - // TODO: Save camera selector as it doesn't make sense to change the camera midway + companion object { + const val CAMERA_CLOSE_TIMEOUT = 20000L + } + data class Settings( override val maxDuration: Long, override val intervalDuration: Long, diff --git a/app/src/main/java/app/myzel394/alibi/ui/components/RecorderScreen/organisms/VideoRecordingStatus.kt b/app/src/main/java/app/myzel394/alibi/ui/components/RecorderScreen/organisms/VideoRecordingStatus.kt index 2905152..6eeab95 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/components/RecorderScreen/organisms/VideoRecordingStatus.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/components/RecorderScreen/organisms/VideoRecordingStatus.kt @@ -77,20 +77,22 @@ fun VideoRecordingStatus( horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier.padding(bottom = 32.dp), ) { - val cameraControl = videoRecorder.recorderService!!.cameraControl!! - if (cameraControl.hasTorchAvailable()) { - val isTorchEnabled = cameraControl.isTorchEnabled() + if (!videoRecorder.isStartingRecording) { + val cameraControl = videoRecorder.recorderService!!.cameraControl!! + if (cameraControl.hasTorchAvailable()) { + val isTorchEnabled = cameraControl.isTorchEnabled() - TorchStatus( - enabled = isTorchEnabled, - onChange = { - if (isTorchEnabled) { - cameraControl.disableTorch() - } else { - cameraControl.enableTorch() - } - }, - ) + TorchStatus( + enabled = isTorchEnabled, + onChange = { + if (isTorchEnabled) { + cameraControl.disableTorch() + } else { + cameraControl.enableTorch() + } + }, + ) + } } Divider() diff --git a/app/src/main/java/app/myzel394/alibi/ui/models/BaseRecorderModel.kt b/app/src/main/java/app/myzel394/alibi/ui/models/BaseRecorderModel.kt index 1f5415b..b43929c 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/models/BaseRecorderModel.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/models/BaseRecorderModel.kt @@ -77,6 +77,8 @@ abstract class BaseRecorderModel