From ad42255ea133cc157b8b2891df2ba3abf501b8cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Rebelo?= Date: Sun, 8 Oct 2023 21:23:25 +0100 Subject: [PATCH] Amazfit T-Rex: Fix activity summary parsing --- .../devices/huami/HuamiActivitySummaryParser.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiActivitySummaryParser.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiActivitySummaryParser.java index ea55d2c1e..b6761edd9 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiActivitySummaryParser.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiActivitySummaryParser.java @@ -148,6 +148,9 @@ public class HuamiActivitySummaryParser implements ActivitySummaryParser { minHR = buffer.getShort(); // hack that skips data on yet unknown summary version 519 data buffer.position(0x8c); + } else if (version == 516) { + // hack that skips data on yet unknown summary version 516 data + buffer.position(buffer.position() + 4); } steps = buffer.getInt(); activeSeconds = buffer.getInt(); @@ -156,10 +159,10 @@ public class HuamiActivitySummaryParser implements ActivitySummaryParser { minLatitude = buffer.getInt(); maxLongitude = buffer.getInt(); minLongitude = buffer.getInt(); - + caloriesBurnt = buffer.getFloat(); distanceMeters = buffer.getFloat(); - + ascentMeters = buffer.getFloat(); descentMeters = buffer.getFloat(); maxAltitude = buffer.getFloat(); @@ -172,7 +175,7 @@ public class HuamiActivitySummaryParser implements ActivitySummaryParser { minPace = buffer.getFloat(); // in seconds/meter maxPace = buffer.getFloat(); averagePace = buffer.getFloat(); - + maxCadence = Math.round(buffer.getFloat() * 60); minCadence = Math.round(buffer.getFloat() * 60); averageCadence = Math.round(buffer.getFloat() * 60); @@ -180,7 +183,7 @@ public class HuamiActivitySummaryParser implements ActivitySummaryParser { maxStride = Math.round(buffer.getFloat() * 100); minStride = Math.round(buffer.getFloat() * 100); averageStride2 = Math.round(buffer.getFloat() * 100); - + distanceMeters2 = buffer.getFloat(); // this distance is 87-97% of distanceMeters, so probably length of the GPS track (difference is larger, when GPS took longer to get a precise position) buffer.getInt(); averageHR = buffer.getShort();