mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2026-07-31 07:44:24 +02:00
Garmin: fix .FIT file summary creation when calculation results in infinity
Example pace calculation when speed is exactly 0.0 m/s. `` Error saving specific samplesjava.lang.IllegalArgumentException: Infinity is not a valid double value as per JSON specification. To override this behavior, use GsonBuilder.serializeSpecialFloatingPointValues() method. at com.google.gson.Gson.checkValidFloatingPoint(Gson.java:508) at com.google.gson.Gson$1.write(Gson.java:470) at com.google.gson.Gson$1.write(Gson.java:453) at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:73) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$2.write(ReflectiveTypeAdapterFactory.java:251) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:491) at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:73) at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:100) at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:64) at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:73) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$2.write(ReflectiveTypeAdapterFactory.java:251) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:491) at com.google.gson.TypeAdapter.toJsonTree(TypeAdapter.java:181) at com.google.gson.typeadapters.RuntimeTypeAdapterFactory$1.write(RuntimeTypeAdapterFactory.java:309) at com.google.gson.TypeAdapter$NullSafeTypeAdapter.write(TypeAdapter.java:304) at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:73) at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.write(MapTypeAdapterFactory.java:225) at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.write(MapTypeAdapterFactory.java:161) at com.google.gson.Gson.toJson(Gson.java:943) at com.google.gson.Gson.toJson(Gson.java:898) at com.google.gson.Gson.toJson(Gson.java:847) at com.google.gson.Gson.toJson(Gson.java:824) at nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryData.toJson(ActivitySummaryData.java:195) at nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryData.toString(ActivitySummaryData.java:191) at nodomain.freeyourgadget.gadgetbridge.devices.garmin.GarminWorkoutParser.updateSummary(GarminWorkoutParser.java:1079) ``
This commit is contained in:
+5
-1
@@ -88,7 +88,11 @@ public class ActivitySummaryData {
|
|||||||
|
|
||||||
/// @return {@code true} if the value was actually added
|
/// @return {@code true} if the value was actually added
|
||||||
public boolean add(final String group, final String key, final Number value, final String unit, boolean forceDisplay) {
|
public boolean add(final String group, final String key, final Number value, final String unit, boolean forceDisplay) {
|
||||||
if (value != null && (value.doubleValue() != 0 || forceDisplay)) {
|
if (value == null || !Double.isFinite(value.doubleValue())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value.doubleValue() != 0 || forceDisplay) {
|
||||||
entries.put(key, new ActivitySummarySimpleEntry(group, value, unit));
|
entries.put(key, new ActivitySummarySimpleEntry(group, value, unit));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user