From a0bf2d03eb90733a7b30550cf5e31d8b2ee5716f Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Sat, 28 Oct 2023 18:20:00 +0200 Subject: [PATCH] feat: Add automatic recording functionality on boot --- app/src/main/AndroidManifest.xml | 1 + .../main/java/app/myzel394/alibi/db/AppSettings.kt | 2 +- .../java/app/myzel394/alibi/receivers/BootReceiver.kt | 11 ++++++++++- .../alibi/services/IntervalRecorderService.kt | 11 +++++++++++ .../app/myzel394/alibi/services/RecorderService.kt | 6 +++--- 5 files changed, 26 insertions(+), 5 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3df9a3d..32cc19f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -47,6 +47,7 @@ diff --git a/app/src/main/java/app/myzel394/alibi/db/AppSettings.kt b/app/src/main/java/app/myzel394/alibi/db/AppSettings.kt index 8714157..ffec8cb 100644 --- a/app/src/main/java/app/myzel394/alibi/db/AppSettings.kt +++ b/app/src/main/java/app/myzel394/alibi/db/AppSettings.kt @@ -19,7 +19,7 @@ data class AppSettings( val showAdvancedSettings: Boolean = false, val theme: Theme = Theme.SYSTEM, val lastRecording: RecordingInformation? = null, - val bootBehavior: BootBehavior? = BootBehavior.SHOW_NOTIFICATION, + val bootBehavior: BootBehavior? = BootBehavior.START_RECORDING, ) { fun setShowAdvancedSettings(showAdvancedSettings: Boolean): AppSettings { return copy(showAdvancedSettings = showAdvancedSettings) diff --git a/app/src/main/java/app/myzel394/alibi/receivers/BootReceiver.kt b/app/src/main/java/app/myzel394/alibi/receivers/BootReceiver.kt index cb45e93..c12ef8f 100644 --- a/app/src/main/java/app/myzel394/alibi/receivers/BootReceiver.kt +++ b/app/src/main/java/app/myzel394/alibi/receivers/BootReceiver.kt @@ -45,8 +45,15 @@ class BootReceiver : BroadcastReceiver() { } } + println("BootReceiver.startRecording()") val intent = Intent(context, AudioRecorderService::class.java).apply { action = "init" + + putExtra( + "startImmediately", + true, + ) + if (settings.notificationSettings != null) { putExtra( "notificationDetails", @@ -61,7 +68,6 @@ class BootReceiver : BroadcastReceiver() { } } ContextCompat.startForegroundService(context, intent) - context.bindService(intent, connection, 0) } private fun showNotification(context: Context) { @@ -98,8 +104,11 @@ class BootReceiver : BroadcastReceiver() { return } + println("BootReceiver.onReceive()") + scope.launch { context.dataStore.data.collectLatest { settings -> + println("BootBehavior: ${settings.bootBehavior}") when (settings.bootBehavior) { AppSettings.BootBehavior.CONTINUE_RECORDING -> { if (AudioRecorderExporter.hasRecordingsAvailable(context)) { 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 88d2bca..df06b01 100644 --- a/app/src/main/java/app/myzel394/alibi/services/IntervalRecorderService.kt +++ b/app/src/main/java/app/myzel394/alibi/services/IntervalRecorderService.kt @@ -58,10 +58,21 @@ abstract class IntervalRecorderService : ExtraRecorderInformationService() { } } + private fun fetchCounterValue() { + val files = outputFolder.listFiles()?.filter { + val name = it.nameWithoutExtension + + name.toIntOrNull() != null + }?.toList() ?: emptyList() + + counter = files.size + } + override fun start() { super.start() outputFolder.mkdirs() + fetchCounterValue() scope.launch { dataStore.data.collectLatest { preferenceSettings -> 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 b670965..60675d4 100644 --- a/app/src/main/java/app/myzel394/alibi/services/RecorderService.kt +++ b/app/src/main/java/app/myzel394/alibi/services/RecorderService.kt @@ -55,10 +55,10 @@ abstract class RecorderService : Service() { it ) } - } - "initStart" -> { - startRecording() + if (intent.getBooleanExtra("startImmediately", false)) { + startRecording() + } } "changeState" -> {