Zepp OS: Add activity type for indoor walking

This commit is contained in:
José Rebelo
2025-07-29 23:56:36 +01:00
parent a28603be87
commit 620a9a3841
4 changed files with 33 additions and 2 deletions
@@ -85,8 +85,8 @@ public class ZeppOsActivitySummaryParser extends HuamiActivitySummaryParser {
}
if (summaryProto.hasType()) {
final ZeppOsActivityType activityType = ZeppOsActivityType
.fromCode((byte) summaryProto.getType().getType());
final byte typeCode = (byte) summaryProto.getType().getType();
final ZeppOsActivityType activityType = ZeppOsActivityType.fromCode(typeCode);
final ActivityKind activityKind;
if (activityType != null) {
@@ -94,6 +94,7 @@ public class ZeppOsActivitySummaryParser extends HuamiActivitySummaryParser {
} else {
LOG.warn("Unknown workout activity type code {}", String.format("0x%X", summaryProto.getType().getType()));
activityKind = ActivityKind.UNKNOWN;
summaryData.add(ACTIVITY_TYPE_CODE, typeCode, UNIT_NONE);
}
summary.setActivityKind(activityKind.getCode());
}
@@ -25,6 +25,8 @@ public class ActivitySummaryEntries {
public static final String STATUS = "status";
public static final String TYPE = "watchface_dialog_widget_type"; // TODO: change this?
public static final String ACTIVITY_TYPE_CODE = "activity_type_code";
public static final String TIME_START = "startTime";
public static final String TIME_END = "endTime";
public static final String ACTIVE_SECONDS = "activeSeconds";
@@ -80,6 +80,7 @@ public enum ZeppOsActivityType {
IndoorCycling(0x08, ActivityKind.INDOOR_CYCLING),
IndoorFitness(0x18, ActivityKind.INDOOR_FITNESS),
IndoorIceSkating(0x2d, ActivityKind.INDOOR_ICE_SKATING),
IndoorWalking(0x28, ActivityKind.INDOOR_WALKING),
JaiAlai(0xab, ActivityKind.JAI_ALAI),
JazzDance(0x71, ActivityKind.JAZZ_DANCE),
Judo(0x62, ActivityKind.JUDO),
@@ -0,0 +1,27 @@
package nodomain.freeyourgadget.gadgetbridge.devices.huami.zeppos;
import org.junit.Ignore;
import org.junit.Test;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Date;
import nodomain.freeyourgadget.gadgetbridge.entities.BaseActivitySummary;
import nodomain.freeyourgadget.gadgetbridge.test.TestBase;
public class ZeppOsActivitySummaryParserTest extends TestBase {
@Test
@Ignore("helper test for development, remove this while debugging")
public void localTest() throws IOException {
final byte[] data = Files.readAllBytes(Paths.get("/storage/activity.bin"));
final BaseActivitySummary summary = new BaseActivitySummary();
summary.setRawSummaryData(data);
summary.setStartTime(new Date());
final ZeppOsActivitySummaryParser parser = new ZeppOsActivitySummaryParser(getContext());
parser.parseBinaryData(summary, summary.getStartTime(), true);
}
}