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 df06b01..56183f9 100644 --- a/app/src/main/java/app/myzel394/alibi/services/IntervalRecorderService.kt +++ b/app/src/main/java/app/myzel394/alibi/services/IntervalRecorderService.kt @@ -1,5 +1,6 @@ package app.myzel394.alibi.services +import android.media.MediaMetadataRetriever import android.media.MediaRecorder import app.myzel394.alibi.dataStore import app.myzel394.alibi.db.AudioRecorderSettings @@ -68,11 +69,35 @@ abstract class IntervalRecorderService : ExtraRecorderInformationService() { counter = files.size } + private fun fetchRecordingTime() { + var oldAmount = 0L + + for (file in outputFolder.listFiles() ?: emptyArray()) { + if (file.nameWithoutExtension.toIntOrNull() == null) { + continue + } + + // It's better to at least get an approximate value, than to crash + runCatching { + val amount = MediaMetadataRetriever().run { + setDataSource(file.absolutePath) + extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION)?.toIntOrNull() + ?: 0 + } + + oldAmount += amount + } + } + + recordingTime = oldAmount + } + override fun start() { super.start() outputFolder.mkdirs() fetchCounterValue() + fetchRecordingTime() 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 60675d4..b5fa25b 100644 --- a/app/src/main/java/app/myzel394/alibi/services/RecorderService.kt +++ b/app/src/main/java/app/myzel394/alibi/services/RecorderService.kt @@ -34,7 +34,7 @@ abstract class RecorderService : Service() { var onStateChange: ((RecorderState) -> Unit)? = null var recordingTime = 0L - private set + protected set private lateinit var recordingTimeTimer: ScheduledExecutorService var onRecordingTimeChange: ((Long) -> Unit)? = null var notificationDetails: RecorderNotificationHelper.NotificationDetails? = null