From 67eac90f690e0a9828b6149078140b382bfb2465 Mon Sep 17 00:00:00 2001 From: Patric Gruber Date: Thu, 25 May 2023 22:16:55 +0200 Subject: [PATCH] merge new activity samples with samples from database on overlap --- .../pinetime/PineTimeActivitySampleProvider.java | 12 ++++++++++++ .../service/devices/pinetime/PineTimeJFSupport.java | 7 +++++++ 2 files changed, 19 insertions(+) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/pinetime/PineTimeActivitySampleProvider.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/pinetime/PineTimeActivitySampleProvider.java index 797a77ffa..10cdfe9f1 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/pinetime/PineTimeActivitySampleProvider.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/pinetime/PineTimeActivitySampleProvider.java @@ -9,6 +9,10 @@ import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession; import nodomain.freeyourgadget.gadgetbridge.entities.PineTimeActivitySample; import nodomain.freeyourgadget.gadgetbridge.entities.PineTimeActivitySampleDao; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; +import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind; + +import java.util.Optional; +import java.util.List; public class PineTimeActivitySampleProvider extends AbstractSampleProvider { private GBDevice mDevice; @@ -68,4 +72,12 @@ public class PineTimeActivitySampleProvider extends AbstractSampleProvider getSampleForTimestamp(int timestamp) { + List foundSamples = this.getGBActivitySamples(timestamp, timestamp, ActivityKind.TYPE_ALL); + if (foundSamples.size() == 0) { + return Optional.empty(); + } + return Optional.of(foundSamples.get(0)); + } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pinetime/PineTimeJFSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pinetime/PineTimeJFSupport.java index e52324152..897458519 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pinetime/PineTimeJFSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pinetime/PineTimeJFSupport.java @@ -51,6 +51,7 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import java.util.TimeZone; +import java.util.Optional; import co.nstant.in.cbor.CborBuilder; import co.nstant.in.cbor.CborEncoder; @@ -1143,6 +1144,12 @@ public class PineTimeJFSupport extends AbstractBTLEDeviceSupport implements DfuL sample.setRawIntensity(ActivitySample.NOT_MEASURED); + Optional storedSample = provider.getSampleForTimestamp(sample.getTimestamp()); + if (storedSample.isPresent()) { + sample.setHeartRate(Math.max(sample.getHeartRate(), storedSample.get().getHeartRate())); + sample.setSteps(Math.max(sample.getSteps(), storedSample.get().getSteps())); + } + provider.addGBActivitySample(sample); }