diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f916266..855e047 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -4,9 +4,15 @@
+
+
+
+
+
Unit = {}
- val filePath: String
- get() = "$folder/$counter.${settings!!.fileExtension}"
-
private fun createRecorder(): MediaRecorder {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
MediaRecorder(this)
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 b2f6fa4..6fd57cb 100644
--- a/app/src/main/java/app/myzel394/alibi/services/IntervalRecorderService.kt
+++ b/app/src/main/java/app/myzel394/alibi/services/IntervalRecorderService.kt
@@ -30,6 +30,9 @@ abstract class IntervalRecorderService: ExtraRecorderInformationService() {
var settings: Settings? = null
protected set
+ val filePath: String
+ get() = "$folder/$counter.${settings!!.fileExtension}"
+
private lateinit var cycleTimer: ScheduledExecutorService
fun createLastRecording(): LastRecording = LastRecording(
diff --git a/app/src/main/java/app/myzel394/alibi/services/VideoRecorderService.kt b/app/src/main/java/app/myzel394/alibi/services/VideoRecorderService.kt
new file mode 100644
index 0000000..10a412a
--- /dev/null
+++ b/app/src/main/java/app/myzel394/alibi/services/VideoRecorderService.kt
@@ -0,0 +1,63 @@
+package app.myzel394.alibi.services
+
+import androidx.camera.view.CameraController.VIDEO_CAPTURE
+import androidx.camera.view.LifecycleCameraController
+import androidx.camera.view.video.ExperimentalVideo
+import androidx.camera.view.video.OnVideoSavedCallback
+import androidx.camera.view.video.OutputFileOptions
+import androidx.camera.view.video.OutputFileResults
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.LifecycleOwner
+import java.io.File
+
+@ExperimentalVideo class VideoRecorderService: IntervalRecorderService() {
+ var amplitudesAmount = 1000
+
+ val cameraController = LifecycleCameraController(this)
+
+ var onError: () -> Unit = {}
+
+ public fun bindToLifecycle(lifecycleOwner: LifecycleOwner) {
+ cameraController.bindToLifecycle(lifecycleOwner)
+ }
+
+ public fun unbindLifecycle() {
+ cameraController.unbind()
+ }
+
+ private fun refreshController() {
+ if (cameraController.isRecording) {
+ cameraController.stopRecording()
+ }
+
+ cameraController.startRecording(
+ OutputFileOptions
+ .builder(File(filePath))
+ .build(),
+ ContextCompat.getMainExecutor(this),
+ object: OnVideoSavedCallback {
+ override fun onVideoSaved(outputFileResults: OutputFileResults) {
+ }
+
+ override fun onError(videoCaptureError: Int, message: String, cause: Throwable?) {
+ onError()
+ }
+ }
+ )
+ }
+
+ override fun start() {
+ cameraController.setEnabledUseCases(VIDEO_CAPTURE)
+ super.start()
+ }
+
+ override fun startNewCycle() {
+ super.startNewCycle()
+
+ refreshController()
+ }
+
+ override fun getAmplitudeAmount(): Int = amplitudesAmount
+
+ override fun getAmplitude(): Int = 0
+}
\ No newline at end of file