Zepp OS: Add jump rope stats

This commit is contained in:
José Rebelo
2025-12-13 16:50:02 +00:00
parent 02acd94a1e
commit f208e6a6fc
2 changed files with 26 additions and 3 deletions
@@ -84,11 +84,11 @@ public class ZeppOsActivitySummaryParser extends HuamiActivitySummaryParser {
return;
}
final ActivityKind activityKind;
if (summaryProto.hasType()) {
final byte typeCode = (byte) summaryProto.getType().getType();
final ZeppOsActivityType activityType = ZeppOsActivityType.fromCode(typeCode);
final ActivityKind activityKind;
if (activityType != null) {
activityKind = activityType.toActivityKind();
} else {
@@ -97,7 +97,10 @@ public class ZeppOsActivitySummaryParser extends HuamiActivitySummaryParser {
summaryData.add(ACTIVITY_TYPE_CODE, typeCode, UNIT_NONE);
}
summary.setActivityKind(activityKind.getCode());
} else {
activityKind = ActivityKind.UNKNOWN;
}
final ActivityKind.CycleUnit cycleUnit = ActivityKind.getCycleUnit(activityKind);
if (summaryProto.hasTime()) {
int totalDuration = summaryProto.getTime().getTotalDuration();
@@ -121,8 +124,8 @@ public class ZeppOsActivitySummaryParser extends HuamiActivitySummaryParser {
}
if (summaryProto.hasSteps()) {
summaryData.add(CADENCE_MAX, summaryProto.getSteps().getMaxCadence() * 60, UNIT_SPM);
summaryData.add(CADENCE_AVG, summaryProto.getSteps().getAvgCadence() * 60, UNIT_SPM);
summaryData.addCadenceMax(summaryProto.getSteps().getMaxCadence() * 60, cycleUnit);
summaryData.addCadenceAvg(summaryProto.getSteps().getAvgCadence() * 60, cycleUnit);
summaryData.add(STRIDE_AVG, summaryProto.getSteps().getAvgStride(), UNIT_CM);
summaryData.add(STEPS, summaryProto.getSteps().getSteps(), UNIT_STEPS);
}
@@ -136,6 +139,15 @@ public class ZeppOsActivitySummaryParser extends HuamiActivitySummaryParser {
summaryData.add(PACE_AVG_SECONDS_KM, summaryProto.getPace().getAvg() * 1000, UNIT_SECONDS_PER_KM);
}
if (summaryProto.hasFrequency()) {
summaryData.addCadenceAvg(summaryProto.getFrequency().getAvgFrequency(), cycleUnit);
summaryData.addCadenceMax(summaryProto.getFrequency().getMaxFrequency(), cycleUnit);
}
if (summaryProto.hasCount()) {
summaryData.add(JUMPS, summaryProto.getCount().getTotalJumps(), UNIT_JUMPS);
}
if (summaryProto.hasCalories()) {
summaryData.add(CALORIES_BURNT, summaryProto.getCalories().getCalories(), UNIT_KCAL);
}
+11
View File
@@ -8,6 +8,7 @@ message WorkoutSummary {
Location location = 2;
Type type = 3;
Distance distance = 4;
Count count = 5;
Steps steps = 11;
Time time = 7;
SwimmingData swimmingData = 9;
@@ -15,6 +16,7 @@ message WorkoutSummary {
Altitude altitude = 13;
HeartRate heartRate = 19;
Calories calories = 16;
Frequency frequency = 18;
TrainingEffect trainingEffect = 21;
HeartRateZones heartRateZones = 22;
Elevation elevation = 23;
@@ -55,6 +57,10 @@ message Distance {
float distance = 1; // meters
}
message Count {
uint32 totalJumps = 1;
}
message Time {
int32 totalDuration = 1; // seconds
int32 workoutDuration = 2; // seconds
@@ -79,6 +85,11 @@ message Calories {
int32 calories = 1; // kcal
}
message Frequency {
uint32 avgFrequency = 1;
uint32 maxFrequency = 2;
}
message HeartRateZones {
// TODO 1, is always = 1?
// Zones: N/A, Warm-up, Fat-burn time, Aerobic, Anaerobic, Extreme