From 86d6c0cc18f4257e7e8ff7b6a426d3864746dec9 Mon Sep 17 00:00:00 2001 From: Tim Kluge Date: Sat, 14 Dec 2024 14:33:45 +0100 Subject: [PATCH] Update circle indicator --- .../de/timklge/karooheadwind/Extensions.kt | 12 +++--------- .../datatypes/HeadwindDirectionDataType.kt | 2 +- app/src/main/res/drawable/circle.png | Bin 0 -> 3657 bytes 3 files changed, 4 insertions(+), 10 deletions(-) create mode 100755 app/src/main/res/drawable/circle.png diff --git a/app/src/main/kotlin/de/timklge/karooheadwind/Extensions.kt b/app/src/main/kotlin/de/timklge/karooheadwind/Extensions.kt index 4a241c8..63754e1 100644 --- a/app/src/main/kotlin/de/timklge/karooheadwind/Extensions.kt +++ b/app/src/main/kotlin/de/timklge/karooheadwind/Extensions.kt @@ -28,7 +28,6 @@ import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.first -import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.scan @@ -40,7 +39,6 @@ import kotlinx.serialization.json.Json import java.time.Duration import kotlin.math.abs import kotlin.math.absoluteValue -import kotlin.math.roundToInt import kotlin.time.Duration.Companion.seconds val jsonWithUnknownKeys = Json { ignoreUnknownKeys = true } @@ -203,14 +201,10 @@ fun KarooSystemService.getRelativeHeadingFlow(context: Context): Flow { } } -fun Double.lerp(target: Double, alpha: Double): Double { - return this + (target - this) * alpha -} - fun KarooSystemService.getHeadingFlow(): Flow { //return flowOf(20.0) - return streamDataFlow("TYPE_LOCATION_ID") + return streamDataFlow(DataType.Type.LOCATION) .mapNotNull { (it as? StreamState.Streaming)?.dataPoint?.values } .map { values -> val heading = values[DataType.Field.LOC_BEARING] @@ -218,7 +212,7 @@ fun KarooSystemService.getHeadingFlow(): Flow { heading ?: 0.0 } .distinctUntilChanged() - .scan(emptyList()) { acc, value -> + .scan(emptyList()) { acc, value -> /* Average over 3 values */ val newAcc = acc + value if (newAcc.size > 3) newAcc.drop(1) else newAcc } @@ -229,7 +223,7 @@ fun KarooSystemService.getHeadingFlow(): Flow { fun KarooSystemService.getGpsCoordinateFlow(): Flow { // return flowOf(GpsCoordinates(52.5164069,13.3784)) - return streamDataFlow("TYPE_LOCATION_ID") + return streamDataFlow(DataType.Type.LOCATION) .mapNotNull { (it as? StreamState.Streaming)?.dataPoint?.values } .mapNotNull { values -> val lat = values[DataType.Field.LOC_LATITUDE] diff --git a/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/HeadwindDirectionDataType.kt b/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/HeadwindDirectionDataType.kt index d1e9f75..62649a0 100644 --- a/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/HeadwindDirectionDataType.kt +++ b/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/HeadwindDirectionDataType.kt @@ -77,7 +77,7 @@ class HeadwindDirectionDataType( val baseBitmap = BitmapFactory.decodeResource( context.resources, - de.timklge.karooheadwind.R.drawable.arrow + de.timklge.karooheadwind.R.drawable.circle ) val configJob = CoroutineScope(Dispatchers.IO).launch { diff --git a/app/src/main/res/drawable/circle.png b/app/src/main/res/drawable/circle.png new file mode 100755 index 0000000000000000000000000000000000000000..cadf6cafb30c206fa0ea63893a5921947b760431 GIT binary patch literal 3657 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 VQc0#FN%QnRWNvI@)MVh6{2!D+ubcn? literal 0 HcmV?d00001