From 2eb19ac5c4e4dcd45f12544ca7609c393d232daf Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Sun, 6 Aug 2023 21:10:28 +0200 Subject: [PATCH] fix: Store minimum amount of amplitudes to reduce memory --- .../app/myzel394/alibi/services/RecorderService.kt | 6 ++++++ .../AudioRecorder/atoms/RealTimeAudioVisualizer.kt | 10 ++++++++++ 2 files changed, 16 insertions(+) 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 08a1fee..8cebc99 100644 --- a/app/src/main/java/app/myzel394/alibi/services/RecorderService.kt +++ b/app/src/main/java/app/myzel394/alibi/services/RecorderService.kt @@ -56,6 +56,7 @@ class RecorderService: Service() { private var onAmplitudeUpdate: () -> Unit = {} private var counter = 0 + var maxAmplitudes = 1000 var settings: Settings? = null private set @@ -241,6 +242,11 @@ class RecorderService: Service() { val amplitude = mediaRecorder!!.maxAmplitude amplitudes.add(amplitude) + // Delete old amplitudes + if (amplitudes.size > maxAmplitudes) { + amplitudes.removeRange(0, amplitudes.size - maxAmplitudes) + } + onAmplitudeUpdate() handler.postDelayed(::updateAmplitude, AMPLITUDE_UPDATE_INTERVAL) } diff --git a/app/src/main/java/app/myzel394/alibi/ui/components/AudioRecorder/atoms/RealTimeAudioVisualizer.kt b/app/src/main/java/app/myzel394/alibi/ui/components/AudioRecorder/atoms/RealTimeAudioVisualizer.kt index 18b196f..2fd0a76 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/components/AudioRecorder/atoms/RealTimeAudioVisualizer.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/components/AudioRecorder/atoms/RealTimeAudioVisualizer.kt @@ -16,11 +16,14 @@ import androidx.compose.ui.geometry.CornerRadius import androidx.compose.ui.geometry.Offset import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.drawscope.translate +import androidx.compose.ui.platform.LocalConfiguration +import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.dp import app.myzel394.alibi.services.RecorderService import app.myzel394.alibi.ui.MAX_AMPLITUDE import app.myzel394.alibi.ui.utils.clamp import kotlinx.coroutines.launch +import kotlin.math.ceil private const val BOX_WIDTH = 15f private const val BOX_GAP = 15f @@ -58,6 +61,13 @@ fun RealtimeAudioVisualizer( } } + val configuration = LocalConfiguration.current + val screenWidth = with (LocalDensity.current) {configuration.screenWidthDp.dp.toPx()} + + LaunchedEffect(screenWidth) { + service.maxAmplitudes = ceil(screenWidth.toInt() / BOX_DIFF).toInt() + } + Canvas( modifier = Modifier .fillMaxWidth()