From 7663c82c88a63e4597abb2d170b1cd47dbaf2cfa Mon Sep 17 00:00:00 2001 From: y20k Date: Mon, 3 May 2021 09:26:29 +0200 Subject: [PATCH] removed a bug in the SimpleMovingAverageQueue (see https://github.com/y20k/trackbook/issues/99#issuecomment-830874285) --- app/src/main/java/org/y20k/trackbook/TrackerService.kt | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/y20k/trackbook/TrackerService.kt b/app/src/main/java/org/y20k/trackbook/TrackerService.kt index 54d052e..77f12d0 100644 --- a/app/src/main/java/org/y20k/trackbook/TrackerService.kt +++ b/app/src/main/java/org/y20k/trackbook/TrackerService.kt @@ -529,11 +529,11 @@ class TrackerService: Service(), CoroutineScope, SensorEventListener { } // store previous smoothed altitude - val previousAltitude: Double = altitudeValues.average + val previousAltitude: Double = altitudeValues.getAverage() // put current altitude into queue altitudeValues.add(currentBestLocation.altitude) // get current smoothed altitude - val currentAltitude: Double = altitudeValues.average + val currentAltitude: Double = altitudeValues.getAverage() // calculate and store elevation differences track = LocationHelper.calculateElevationDifferences(currentAltitude, previousAltitude, track) @@ -562,16 +562,15 @@ class TrackerService: Service(), CoroutineScope, SensorEventListener { /* Credit: CircularQueue https://stackoverflow.com/a/51923797 */ class SimpleMovingAverageQueue(var capacity: Int) : LinkedList() { private var sum: Double = 0.0 - var average: Double = sum / capacity override fun add(element: Double): Boolean { if (this.size >= capacity) { sum -= this.first removeFirst() - } else { - sum += element } + sum += element return super.add(element) } + fun getAverage(): Double = sum / capacity }