mirror of
https://github.com/Myzel394/Alibi.git
synced 2025-06-23 00:50:30 +02:00
feat: Add VideoRecorderService
This commit is contained in:
parent
8bd9e3d35a
commit
0ef93e2b47
@ -4,9 +4,15 @@
|
|||||||
|
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||||
|
|
||||||
|
<uses-feature android:name="android.hardware.camera.any" android:required="false" />
|
||||||
|
<uses-permission android:name="android.permission.CAMERA" />
|
||||||
|
<uses-feature android:name="android.hardware.microphone" />
|
||||||
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
||||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
||||||
|
android:maxSdkVersion="28" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:name=".UpdateSettingsApp"
|
android:name=".UpdateSettingsApp"
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
|
@ -12,9 +12,6 @@ class AudioRecorderService: IntervalRecorderService() {
|
|||||||
private set
|
private set
|
||||||
var onError: () -> Unit = {}
|
var onError: () -> Unit = {}
|
||||||
|
|
||||||
val filePath: String
|
|
||||||
get() = "$folder/$counter.${settings!!.fileExtension}"
|
|
||||||
|
|
||||||
private fun createRecorder(): MediaRecorder {
|
private fun createRecorder(): MediaRecorder {
|
||||||
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||||
MediaRecorder(this)
|
MediaRecorder(this)
|
||||||
|
@ -30,6 +30,9 @@ abstract class IntervalRecorderService: ExtraRecorderInformationService() {
|
|||||||
var settings: Settings? = null
|
var settings: Settings? = null
|
||||||
protected set
|
protected set
|
||||||
|
|
||||||
|
val filePath: String
|
||||||
|
get() = "$folder/$counter.${settings!!.fileExtension}"
|
||||||
|
|
||||||
private lateinit var cycleTimer: ScheduledExecutorService
|
private lateinit var cycleTimer: ScheduledExecutorService
|
||||||
|
|
||||||
fun createLastRecording(): LastRecording = LastRecording(
|
fun createLastRecording(): LastRecording = LastRecording(
|
||||||
|
@ -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
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user