diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/CyclingChartFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/CyclingChartFragment.java index 868886b5d..3366f3797 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/CyclingChartFragment.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/CyclingChartFragment.java @@ -10,6 +10,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; +import com.github.mikephil.charting.animation.Easing; import com.github.mikephil.charting.charts.Chart; import com.github.mikephil.charting.charts.LineChart; import com.github.mikephil.charting.components.LegendEntry; @@ -108,13 +109,28 @@ public class CyclingChartFragment extends AbstractChartFragment distanceEntries = new ArrayList<>(); List speedEntries = new ArrayList<>(); + Float dayStart = 0f; + + if(!samples.isEmpty()){ + dayStart = samples.get(0).getDistance() / 1000f; + } + + int nextIndex = 0; for (CyclingSample sample : samples) { // add distance in Km - distanceEntries.add(new Entry(sample.getTimestamp(), sample.getDistance() / 1000f)); + distanceEntries.add(new Entry(sample.getTimestamp(), (sample.getDistance() / 1000f) - dayStart)); Float speed = sample.getSpeed(); - if(speed != null){ - speedEntries.add(new Entry(sample.getTimestamp(), sample.getSpeed() * 3.6f)); + speedEntries.add(new Entry(sample.getTimestamp(), (speed != null) ? (sample.getSpeed() * 3.6f) : 0)); + + if(nextIndex < samples.size()){ + CyclingSample nextSample = samples.get(nextIndex); + if(nextSample.getSpeed() == null){ + // sensor is off, doesn't report zero speed. So let's inject it outselves + speedEntries.add(new Entry(sample.getTimestamp() + 30_000, 0)); + } } + + nextIndex++; } LineDataSet distanceSet = new LineDataSet(distanceEntries, "Cycling"); @@ -126,7 +142,7 @@ public class CyclingChartFragment extends AbstractChartFragment