mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2025-02-04 04:54:10 +01:00
Xiaomi-protobuf: Display unknown activity codes in UI
This commit is contained in:
parent
ff6b8e56b1
commit
b220c94c6b
@ -26,6 +26,7 @@ import java.util.List;
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.xiaomi.XiaomiPreferences;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
||||
|
||||
@ -46,25 +47,99 @@ public class XiaomiWorkoutType {
|
||||
return name;
|
||||
}
|
||||
|
||||
@StringRes
|
||||
public static int mapWorkoutName(final int code) {
|
||||
public static ActivityKind fromCode(final int code) {
|
||||
switch (code) {
|
||||
case 1:
|
||||
return R.string.activity_type_outdoor_running;
|
||||
return ActivityKind.OUTDOOR_RUNNING;
|
||||
case 2:
|
||||
return R.string.activity_type_walking;
|
||||
return ActivityKind.WALKING;
|
||||
case 3:
|
||||
return R.string.activity_type_hiking;
|
||||
return ActivityKind.HIKING;
|
||||
case 4:
|
||||
return R.string.activity_type_trekking;
|
||||
return ActivityKind.TREKKING;
|
||||
case 5:
|
||||
return R.string.activity_type_trail_run;
|
||||
return ActivityKind.TRAIL_RUN;
|
||||
case 6:
|
||||
return R.string.activity_type_outdoor_cycling;
|
||||
case 501:
|
||||
return R.string.activity_type_wrestling;
|
||||
return ActivityKind.OUTDOOR_CYCLING;
|
||||
case 7: // indoor cycling 0x0007
|
||||
return ActivityKind.INDOOR_CYCLING;
|
||||
case 8: // freestyle 0x0008
|
||||
return ActivityKind.FREE_TRAINING;
|
||||
case 12: // yoga 0x000c
|
||||
return ActivityKind.YOGA;
|
||||
case 15:
|
||||
return ActivityKind.OUTDOOR_WALKING;
|
||||
case 16: // HIIT 0x0010
|
||||
return ActivityKind.HIIT;
|
||||
case 201: // skateboard 0x00c9
|
||||
return ActivityKind.SKATEBOARDING;
|
||||
case 202: // roller skating 0x00ca
|
||||
return ActivityKind.ROLLER_SKATING;
|
||||
case 301: // stair climbing 0x012d
|
||||
return ActivityKind.STAIRS;
|
||||
case 303: // core training 0x012f
|
||||
return ActivityKind.CORE_TRAINING;
|
||||
case 304: // flexibility 0x0130
|
||||
return ActivityKind.FLEXIBILITY;
|
||||
case 305: // pilates 0x0131
|
||||
return ActivityKind.PILATES;
|
||||
case 307: // stretching 0x0133
|
||||
return ActivityKind.STRETCHING;
|
||||
case 308: // strength 0x0134
|
||||
return ActivityKind.STRENGTH_TRAINING;
|
||||
case 310: // aerobics 0x0136
|
||||
return ActivityKind.AEROBICS;
|
||||
case 311: // physical training
|
||||
return ActivityKind.PHYSICAL_TRAINING;
|
||||
case 313: // dumbbell
|
||||
return ActivityKind.DUMBBELL;
|
||||
case 314: // barbell
|
||||
return ActivityKind.BARBELL;
|
||||
case 318: // sit-ups
|
||||
return ActivityKind.SIT_UPS;
|
||||
case 320: // upper body 0x0140
|
||||
return ActivityKind.UPPER_BODY;
|
||||
case 321: // lower body 0x0141
|
||||
return ActivityKind.LOWER_BODY;
|
||||
case 399: // indoor-Fitness 0x018f
|
||||
return ActivityKind.INDOOR_FITNESS;
|
||||
case 499: // dancing 0x01f3
|
||||
return ActivityKind.DANCE;
|
||||
case 501: // Wrestling
|
||||
return ActivityKind.WRESTLING;
|
||||
case 600: // Soccer 0x0258
|
||||
return ActivityKind.SOCCER;
|
||||
case 601: // basketball 0x0259
|
||||
return ActivityKind.BASKETBALL;
|
||||
case 607: // table tennis 0x025f
|
||||
return ActivityKind.TABLE_TENNIS;
|
||||
case 608: // badminton 0x0260
|
||||
return ActivityKind.BADMINTON;
|
||||
case 609: // tennis 0x0261
|
||||
return ActivityKind.TENNIS;
|
||||
case 614: // billiard 0x0266
|
||||
return ActivityKind.BILLIARDS;
|
||||
case 619: // golf 0x026b
|
||||
return ActivityKind.GOLF;
|
||||
case 700: // ice skating 0x02bc
|
||||
return ActivityKind.ICE_SKATING;
|
||||
case 708: // snowboard 0x02c4
|
||||
return ActivityKind.SNOWBOARDING;
|
||||
case 709: // skiing 0x02c5
|
||||
return ActivityKind.SKIING;
|
||||
case 808: // shuttlecock 0x0328
|
||||
return ActivityKind.SHUTTLECOCK;
|
||||
}
|
||||
|
||||
return ActivityKind.UNKNOWN;
|
||||
}
|
||||
|
||||
@StringRes
|
||||
public static int mapWorkoutName(final int code) {
|
||||
final ActivityKind activityKind = fromCode(code);
|
||||
if (activityKind != ActivityKind.UNKNOWN) {
|
||||
return activityKind.getLabel();
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.service.devices.xiaomi.activity.imp
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.SWIM_STYLE;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.TIME_END;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.TIME_START;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_NONE;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_SECONDS;
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_UNIX_EPOCH_SECONDS;
|
||||
|
||||
@ -35,6 +36,7 @@ import java.util.Objects;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.workouts.entries.ActivitySummaryProgressEntry;
|
||||
import nodomain.freeyourgadget.gadgetbridge.devices.xiaomi.XiaomiWorkoutType;
|
||||
import nodomain.freeyourgadget.gadgetbridge.entities.BaseActivitySummary;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryData;
|
||||
@ -108,123 +110,10 @@ public class XiaomiSimpleActivityParser {
|
||||
|
||||
summaryData.add(dataEntry.getKey(), swimStyleName);
|
||||
} else if (dataEntry.getKey().equals(XIAOMI_WORKOUT_TYPE)) {
|
||||
switch (value.intValue()) {
|
||||
case 1:
|
||||
summary.setActivityKind(ActivityKind.OUTDOOR_RUNNING.getCode());
|
||||
break;
|
||||
case 2:
|
||||
summary.setActivityKind(ActivityKind.WALKING.getCode());
|
||||
break;
|
||||
case 4:
|
||||
summary.setActivityKind(ActivityKind.TREKKING.getCode());
|
||||
break;
|
||||
case 5:
|
||||
summary.setActivityKind(ActivityKind.TRAIL_RUN.getCode());
|
||||
break;
|
||||
case 6:
|
||||
summary.setActivityKind(ActivityKind.OUTDOOR_CYCLING.getCode());
|
||||
break;
|
||||
case 7: // indoor cycling 0x0007
|
||||
summary.setActivityKind(ActivityKind.INDOOR_CYCLING.getCode());
|
||||
break;
|
||||
case 8: // freestyle 0x0008
|
||||
summary.setActivityKind(ActivityKind.FREE_TRAINING.getCode());
|
||||
break;
|
||||
case 12: // yoga 0x000c
|
||||
summary.setActivityKind(ActivityKind.YOGA.getCode());
|
||||
break;
|
||||
case 15:
|
||||
summary.setActivityKind(ActivityKind.OUTDOOR_WALKING.getCode());
|
||||
break;
|
||||
case 16: // HIIT 0x0010
|
||||
summary.setActivityKind(ActivityKind.HIIT.getCode());
|
||||
break;
|
||||
case 201: // skateboard 0x00c9
|
||||
summary.setActivityKind(ActivityKind.SKATEBOARDING.getCode());
|
||||
break;
|
||||
case 202: // roller skating 0x00ca
|
||||
summary.setActivityKind(ActivityKind.ROLLER_SKATING.getCode());
|
||||
break;
|
||||
case 301: // stair climbing 0x012d
|
||||
summary.setActivityKind(ActivityKind.STAIRS.getCode());
|
||||
break;
|
||||
case 303: // core training 0x012f
|
||||
summary.setActivityKind(ActivityKind.CORE_TRAINING.getCode());
|
||||
break;
|
||||
case 304: // flexibility 0x0130
|
||||
summary.setActivityKind(ActivityKind.FLEXIBILITY.getCode());
|
||||
break;
|
||||
case 305: // pilates 0x0131
|
||||
summary.setActivityKind(ActivityKind.PILATES.getCode());
|
||||
break;
|
||||
case 307: // stretching 0x0133
|
||||
summary.setActivityKind(ActivityKind.STRETCHING.getCode());
|
||||
break;
|
||||
case 308: // strength 0x0134
|
||||
summary.setActivityKind(ActivityKind.STRENGTH_TRAINING.getCode());
|
||||
break;
|
||||
case 310: // aerobics 0x0136
|
||||
summary.setActivityKind(ActivityKind.AEROBICS.getCode());
|
||||
break;
|
||||
case 311: // physical training
|
||||
summary.setActivityKind(ActivityKind.PHYSICAL_TRAINING.getCode());
|
||||
break;
|
||||
case 313: // dumbbell
|
||||
summary.setActivityKind(ActivityKind.DUMBBELL.getCode());
|
||||
break;
|
||||
case 314: // barbell
|
||||
summary.setActivityKind(ActivityKind.BARBELL.getCode());
|
||||
break;
|
||||
case 318: // sit-ups
|
||||
summary.setActivityKind(ActivityKind.SIT_UPS.getCode());
|
||||
break;
|
||||
case 320: // upper body 0x0140
|
||||
summary.setActivityKind(ActivityKind.UPPER_BODY.getCode());
|
||||
break;
|
||||
case 321: // lower body 0x0141
|
||||
summary.setActivityKind(ActivityKind.LOWER_BODY.getCode());
|
||||
break;
|
||||
case 399: // indoor-Fitness 0x018f
|
||||
summary.setActivityKind(ActivityKind.INDOOR_FITNESS.getCode());
|
||||
break;
|
||||
case 499: // dancing 0x01f3
|
||||
summary.setActivityKind(ActivityKind.DANCE.getCode());
|
||||
break;
|
||||
case 600: // Soccer 0x0258
|
||||
summary.setActivityKind(ActivityKind.SOCCER.getCode());
|
||||
break;
|
||||
case 601: // basketball 0x0259
|
||||
summary.setActivityKind(ActivityKind.BASKETBALL.getCode());
|
||||
break;
|
||||
case 607: // table tennis 0x025f
|
||||
summary.setActivityKind(ActivityKind.TABLE_TENNIS.getCode());
|
||||
break;
|
||||
case 608: // badminton 0x0260
|
||||
summary.setActivityKind(ActivityKind.BADMINTON.getCode());
|
||||
break;
|
||||
case 609: // tennis 0x0261
|
||||
summary.setActivityKind(ActivityKind.TENNIS.getCode());
|
||||
break;
|
||||
case 614: // billiard 0x0266
|
||||
summary.setActivityKind(ActivityKind.BILLIARDS.getCode());
|
||||
break;
|
||||
case 619: // golf 0x026b
|
||||
summary.setActivityKind(ActivityKind.GOLF.getCode());
|
||||
break;
|
||||
case 700: // ice skating 0x02bc
|
||||
summary.setActivityKind(ActivityKind.ICE_SKATING.getCode());
|
||||
break;
|
||||
case 708: // snowboard 0x02c4
|
||||
summary.setActivityKind(ActivityKind.SNOWBOARDING.getCode());
|
||||
break;
|
||||
case 709: // skiing 0x02c5
|
||||
summary.setActivityKind(ActivityKind.SKIING.getCode());
|
||||
break;
|
||||
case 808: // shuttlecock 0x0328
|
||||
summary.setActivityKind(ActivityKind.SHUTTLECOCK.getCode());
|
||||
break;
|
||||
default:
|
||||
summary.setActivityKind(ActivityKind.UNKNOWN.getCode());
|
||||
final ActivityKind activityKind = XiaomiWorkoutType.fromCode(value.intValue());
|
||||
summary.setActivityKind(activityKind.getCode());
|
||||
if (activityKind == ActivityKind.UNKNOWN) {
|
||||
summaryData.add(dataEntry.getKey(), value, UNIT_NONE);
|
||||
}
|
||||
} else if (ActivitySummaryEntries.HR_ZONES.containsKey(dataEntry.getKey())) {
|
||||
// Save the HR zones so we can add them later in order
|
||||
|
Loading…
Reference in New Issue
Block a user