1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-06-22 21:10:21 +02:00

merge new activity samples with samples from database on overlap

This commit is contained in:
Patric Gruber 2023-05-25 22:16:55 +02:00 committed by José Rebelo
parent 86f77e05a9
commit 67eac90f69
2 changed files with 19 additions and 0 deletions

View File

@ -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<PineTimeActivitySample> {
private GBDevice mDevice;
@ -68,4 +72,12 @@ public class PineTimeActivitySampleProvider extends AbstractSampleProvider<PineT
public PineTimeActivitySample createActivitySample() {
return new PineTimeActivitySample();
}
public Optional<PineTimeActivitySample> getSampleForTimestamp(int timestamp) {
List<PineTimeActivitySample> foundSamples = this.getGBActivitySamples(timestamp, timestamp, ActivityKind.TYPE_ALL);
if (foundSamples.size() == 0) {
return Optional.empty();
}
return Optional.of(foundSamples.get(0));
}
}

View File

@ -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<PineTimeActivitySample> 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);
}