Huawei: cleanup code

This commit is contained in:
Me7c7
2025-09-15 12:49:40 +02:00
parent a64dc9aa20
commit 9de9c56526
8 changed files with 56 additions and 98 deletions
@@ -114,16 +114,12 @@ public class HeartRateZonesConfig {
//TODO: I am not sure about this. But it looks correct. //TODO: I am not sure about this. But it looks correct.
private int getHRCorrection() { private int getHRCorrection() {
switch (this.configType) { return switch (this.configType) {
case TYPE_SITTING: case TYPE_SITTING -> 6;
return 6; case TYPE_SWIMMING -> 10;
case TYPE_SWIMMING: case TYPE_OTHER -> 5;
return 10; default -> 0;
case TYPE_OTHER: };
return 5;
default:
return 0;
}
} }
public int getCalculateMethod() { public int getCalculateMethod() {
@@ -296,8 +292,6 @@ public class HeartRateZonesConfig {
return true; return true;
} }
return (method == CALCULATE_METHOD_MHR) || (method == CALCULATE_METHOD_HRR); return (method == CALCULATE_METHOD_MHR) || (method == CALCULATE_METHOD_HRR);
} }
} }
@@ -47,7 +47,6 @@ import nodomain.freeyourgadget.gadgetbridge.entities.HuaweiWorkoutSummarySampleD
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind; import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind;
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample; import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.HuaweiSupportProvider;
public class HuaweiSampleProvider extends AbstractSampleProvider<HuaweiActivitySample> { public class HuaweiSampleProvider extends AbstractSampleProvider<HuaweiActivitySample> {
@@ -17,36 +17,19 @@
package nodomain.freeyourgadget.gadgetbridge.devices.huawei; package nodomain.freeyourgadget.gadgetbridge.devices.huawei;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import de.greenrobot.dao.AbstractDao; import de.greenrobot.dao.AbstractDao;
import de.greenrobot.dao.Property; import de.greenrobot.dao.Property;
import de.greenrobot.dao.query.QueryBuilder; import de.greenrobot.dao.query.QueryBuilder;
import nodomain.freeyourgadget.gadgetbridge.database.DBHelper; import nodomain.freeyourgadget.gadgetbridge.database.DBHelper;
import nodomain.freeyourgadget.gadgetbridge.devices.AbstractTimeSampleProvider; import nodomain.freeyourgadget.gadgetbridge.devices.AbstractTimeSampleProvider;
import nodomain.freeyourgadget.gadgetbridge.devices.TimeSampleProvider;
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession; import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
import nodomain.freeyourgadget.gadgetbridge.entities.Device; import nodomain.freeyourgadget.gadgetbridge.entities.Device;
import nodomain.freeyourgadget.gadgetbridge.entities.HuaweiDictData;
import nodomain.freeyourgadget.gadgetbridge.entities.HuaweiDictDataDao;
import nodomain.freeyourgadget.gadgetbridge.entities.HuaweiDictDataValues;
import nodomain.freeyourgadget.gadgetbridge.entities.HuaweiDictDataValuesDao;
import nodomain.freeyourgadget.gadgetbridge.entities.HuaweiSleepStageSample;
import nodomain.freeyourgadget.gadgetbridge.entities.HuaweiSleepStageSampleDao;
import nodomain.freeyourgadget.gadgetbridge.entities.HuaweiSleepStatsSample;
import nodomain.freeyourgadget.gadgetbridge.entities.HuaweiSleepStatsSampleDao;
import nodomain.freeyourgadget.gadgetbridge.entities.HuaweiTemperatureSample; import nodomain.freeyourgadget.gadgetbridge.entities.HuaweiTemperatureSample;
import nodomain.freeyourgadget.gadgetbridge.entities.HuaweiTemperatureSampleDao; import nodomain.freeyourgadget.gadgetbridge.entities.HuaweiTemperatureSampleDao;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.TemperatureSample;
public class HuaweiTemperatureSampleProvider extends AbstractTimeSampleProvider<HuaweiTemperatureSample> { public class HuaweiTemperatureSampleProvider extends AbstractTimeSampleProvider<HuaweiTemperatureSample> {
@@ -97,6 +80,4 @@ public class HuaweiTemperatureSampleProvider extends AbstractTimeSampleProvider<
HuaweiTemperatureSample sample = samples.get(0); HuaweiTemperatureSample sample = samples.get(0);
return sample.getLastTimestamp(); return sample.getLastTimestamp();
} }
} }
@@ -149,18 +149,13 @@ public class HuaweiStressCalibrationFragment extends AbstractGBFragment {
} }
private String getLevelDescription(byte level) { private String getLevelDescription(byte level) {
switch (level) { return switch (level) {
case 1: case 1 -> getString(R.string.stress_relaxed);
return getString(R.string.stress_relaxed); case 2 -> getString(R.string.stress_mild);
case 2: case 3 -> getString(R.string.stress_moderate);
return getString(R.string.stress_mild); case 4 -> getString(R.string.stress_high);
case 3: default -> getString(R.string.n_a);
return getString(R.string.stress_moderate); };
case 4:
return getString(R.string.stress_high);
default:
return getString(R.string.n_a);
}
} }
@@ -1,7 +1,5 @@
package nodomain.freeyourgadget.gadgetbridge.service.devices.huawei; package nodomain.freeyourgadget.gadgetbridge.service.devices.huawei;
import android.util.Log;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -134,12 +134,12 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
charts.addAll(DefaultWorkoutCharts.buildDefaultCharts(context, activityPoints, activityKind)); charts.addAll(DefaultWorkoutCharts.buildDefaultCharts(context, activityPoints, activityKind));
} }
byte[] recoveryHR = huaweiSummaries.get(0).getRecoveryHeartRates(); byte[] recoveryHR = huaweiSummaries.get(0).getRecoveryHeartRates();
if(recoveryHR != null && recoveryHR.length > 0) { if (recoveryHR != null && recoveryHR.length > 0) {
// starts from workoutEndTime - 5000 // starts from workoutEndTime - 5000
byte[] recHR = StringUtils.hexToBytes(new String(recoveryHR)); byte[] recHR = StringUtils.hexToBytes(new String(recoveryHR));
final List<Entry> heartRateDataPoints = new ArrayList<>(); final List<Entry> heartRateDataPoints = new ArrayList<>();
for(int i = 0; i< recHR.length; i++) { for (int i = 0; i < recHR.length; i++) {
heartRateDataPoints.add(new Entry(i * 5000, recHR[i]& 0xFF)); heartRateDataPoints.add(new Entry(i * 5000, recHR[i] & 0xFF));
} }
charts.add(createRecoveryHeartRateChart(context, heartRateDataPoints)); charts.add(createRecoveryHeartRateChart(context, heartRateDataPoints));
} }
@@ -427,6 +427,21 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
session.getBaseActivitySummaryDao().insertOrReplace(baseSummary); session.getBaseActivitySummaryDao().insertOrReplace(baseSummary);
} }
public static Integer parseAndValidatePostureType(final String postureType) {
if (postureType == null) {
return null;
}
try {
int type = Integer.parseInt(postureType);
if (type < 1 || type > 4) {
return null;
}
return type;
} catch (NumberFormatException e) {
return null;
}
}
public static class HuaweiAdditionalSummaryParameter { public static class HuaweiAdditionalSummaryParameter {
public static final int TYPE_STRING = 1; public static final int TYPE_STRING = 1;
public static final int TYPE_INT = 2; public static final int TYPE_INT = 2;
@@ -495,21 +510,6 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
param.addData(summaryData, value); param.addData(summaryData, value);
} }
private Integer parseAndValidatePostureType(String postureType) {
if(postureType == null) {
return null;
}
try {
int type = Integer.parseInt(postureType);
if (type < 1 || type > 4) {
return null;
}
return type;
} catch (NumberFormatException e) {
return null;
}
}
private static WorkoutChart createRecoveryHeartRateChart(final Context context, private static WorkoutChart createRecoveryHeartRateChart(final Context context,
final List<Entry> heartRateDataPoints) { final List<Entry> heartRateDataPoints) {
final String label = String.format("%s(%s)", context.getString(R.string.recovery_heart_rate), DefaultWorkoutCharts.getUnitString(context, ActivitySummaryEntries.UNIT_BPM)); final String label = String.format("%s(%s)", context.getString(R.string.recovery_heart_rate), DefaultWorkoutCharts.getUnitString(context, ActivitySummaryEntries.UNIT_BPM));
@@ -526,8 +526,8 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
public ActivitySummaryData updateBaseSummary(final DaoSession session, public ActivitySummaryData updateBaseSummary(final DaoSession session,
final HuaweiWorkoutSummarySample summary, final HuaweiWorkoutSummarySample summary,
final BaseActivitySummary baseSummary, final List<ActivityPoint> activityPoints) { final BaseActivitySummary baseSummary, final List<ActivityPoint> activityPoints) {
ActivitySummaryData summaryData = new ActivitySummaryData(); ActivitySummaryData summaryData = new ActivitySummaryData();
@@ -557,7 +557,7 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
additionalValues.put(sav.getKey(), sav.getValue()); additionalValues.put(sav.getKey(), sav.getValue());
} }
ActivityKind type = huaweiTypeToGbType(summary.getType()); final ActivityKind type = huaweiTypeToGbType(summary.getType());
summaryData.add(ActivitySummaryEntries.CALORIES_BURNT, summary.getCalories(), ActivitySummaryEntries.UNIT_KCAL); summaryData.add(ActivitySummaryEntries.CALORIES_BURNT, summary.getCalories(), ActivitySummaryEntries.UNIT_KCAL);
summaryData.add(ActivitySummaryEntries.DISTANCE_METERS, summary.getDistance(), ActivitySummaryEntries.UNIT_METERS); summaryData.add(ActivitySummaryEntries.DISTANCE_METERS, summary.getDistance(), ActivitySummaryEntries.UNIT_METERS);
@@ -567,12 +567,11 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
summaryData.add(ActivitySummaryEntries.TYPE, summary.getType() & 0xFF, ActivitySummaryEntries.UNIT_NONE); summaryData.add(ActivitySummaryEntries.TYPE, summary.getType() & 0xFF, ActivitySummaryEntries.UNIT_NONE);
if (summary.getDuration() > 0) { if (summary.getDuration() > 0) {
float totalAvgSpeed = (float)summary.getDistance() / (float)summary.getDuration(); float totalAvgSpeed = (float) summary.getDistance() / (float) summary.getDuration();
LOG.info("totalAvgSpeed: {}", totalAvgSpeed); if (ActivityKind.isSwimActivity(type)) {
if(ActivityKind.isSwimActivity(type)) {
summaryData.add(ActivitySummaryEntries.PACE_AVG_SECONDS_KM, 100.0f / totalAvgSpeed, ActivitySummaryEntries.UNIT_SECONDS_PER_100_METERS); summaryData.add(ActivitySummaryEntries.PACE_AVG_SECONDS_KM, 100.0f / totalAvgSpeed, ActivitySummaryEntries.UNIT_SECONDS_PER_100_METERS);
} else if (ActivityKind.isPaceActivity(type)) { } else if (ActivityKind.isPaceActivity(type)) {
summaryData.add(ActivitySummaryEntries.PACE_AVG_SECONDS_KM,(60f / ((totalAvgSpeed * 3.6f))) * 60f, ActivitySummaryEntries.UNIT_SECONDS_PER_KM); summaryData.add(ActivitySummaryEntries.PACE_AVG_SECONDS_KM, (60f / ((totalAvgSpeed * 3.6f))) * 60f, ActivitySummaryEntries.UNIT_SECONDS_PER_KM);
} else { } else {
summaryData.add(ActivitySummaryEntries.SPEED_AVG, totalAvgSpeed, ActivitySummaryEntries.UNIT_METERS_PER_SECOND); summaryData.add(ActivitySummaryEntries.SPEED_AVG, totalAvgSpeed, ActivitySummaryEntries.UNIT_METERS_PER_SECOND);
} }
@@ -611,8 +610,8 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
} }
if (summary.getMaxMET() > 0) { if (summary.getMaxMET() > 0) {
int value = (int) (((float) summary.getMaxMET() * 3.5f)) / 65536; int oxygenUptake = (int) (((float) summary.getMaxMET() * 3.5f)) / 65536;
summaryData.add(ActivitySummaryEntries.MAXIMUM_OXYGEN_UPTAKE, value, ActivitySummaryEntries.UNIT_ML_KG_MIN); summaryData.add(ActivitySummaryEntries.MAXIMUM_OXYGEN_UPTAKE, oxygenUptake, ActivitySummaryEntries.UNIT_ML_KG_MIN);
} }
Integer summaryMinAltitude = summary.getMinAltitude(); Integer summaryMinAltitude = summary.getMinAltitude();
@@ -630,9 +629,7 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
boolean unknownData = false; boolean unknownData = false;
if (!dataSamples.isEmpty()) { if (!dataSamples.isEmpty()) {
int maxSpeed = Integer.MIN_VALUE; int maxSpeed = Integer.MIN_VALUE;
int speed = 0;
int speedCount = 0; int speedCount = 0;
int avgStepRate = 0;
int cadence = 0; int cadence = 0;
int cadenceCount = 0; int cadenceCount = 0;
int stepLength = 0; int stepLength = 0;
@@ -681,7 +678,7 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
Integer zonePostureType = parseAndValidatePostureType(additionalValues.get("postureType")); Integer zonePostureType = parseAndValidatePostureType(additionalValues.get("postureType"));
LOG.info("Workout HR Zone Workout Posture Type: {}", zonePostureType); LOG.info("Workout HR Zone Workout Posture Type: {}", zonePostureType);
if(zonePostureType == null) { if (zonePostureType == null) {
zonePostureType = HuaweiWorkoutUtils.getHRZonePostureTypeByActivity(type); zonePostureType = HuaweiWorkoutUtils.getHRZonePostureTypeByActivity(type);
} }
LOG.info("Workout HR Zone Final Posture Type: {}", zonePostureType); LOG.info("Workout HR Zone Final Posture Type: {}", zonePostureType);
@@ -716,14 +713,13 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
} }
if (dataSample.getSpeed() != -1) { if (dataSample.getSpeed() != -1) {
speed += dataSample.getSpeed();
speedCount += 1; speedCount += 1;
if (dataSample.getSpeed() > maxSpeed) if (dataSample.getSpeed() > maxSpeed)
maxSpeed = dataSample.getSpeed(); maxSpeed = dataSample.getSpeed();
ac.setSpeed(dataSample.getSpeed() / 10.0f); ac.setSpeed(dataSample.getSpeed() / 10.0f);
} }
//TODO: currently only for walking but I suppose it can be used for all workouts //TODO: currently only for walking but I suppose it can be used for all workouts
if(summary.getNewSteps() && (type == ActivityKind.WALKING || type == ActivityKind.OUTDOOR_WALKING)) { if (summary.getNewSteps() && (type == ActivityKind.WALKING || type == ActivityKind.OUTDOOR_WALKING)) {
if (dataSample.getStepRate() != -1) { if (dataSample.getStepRate() != -1) {
ac.setCadence(dataSample.getStepRate() & 0xFF); ac.setCadence(dataSample.getStepRate() & 0xFF);
} }
@@ -822,7 +818,7 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
} }
previousAlt = alt; previousAlt = alt;
ac.setLocation(new GPSCoordinate(0, 0, alt/ 10.0f)); ac.setLocation(new GPSCoordinate(0, 0, alt / 10.0f));
} }
if (dataSample.getDataErrorHex() != null) if (dataSample.getDataErrorHex() != null)
unknownData = true; unknownData = true;
@@ -835,11 +831,12 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
final double totalTime = Arrays.stream(HRZones).sum(); final double totalTime = Arrays.stream(HRZones).sum();
final List<String> zoneOrder = Arrays.asList(ActivitySummaryEntries.HR_ZONE_WARM_UP, ActivitySummaryEntries.HR_ZONE_FAT_BURN, ActivitySummaryEntries.HR_ZONE_AEROBIC, ActivitySummaryEntries.HR_ZONE_ANAEROBIC, ActivitySummaryEntries.HR_ZONE_EXTREME); final List<String> zoneOrder = Arrays.asList(ActivitySummaryEntries.HR_ZONE_WARM_UP, ActivitySummaryEntries.HR_ZONE_FAT_BURN, ActivitySummaryEntries.HR_ZONE_AEROBIC, ActivitySummaryEntries.HR_ZONE_ANAEROBIC, ActivitySummaryEntries.HR_ZONE_EXTREME);
final int[] zoneColors = new int[]{ final int[] zoneColors = new int[]{
context.getResources().getColor(R.color.hr_zone_warm_up_color), ContextCompat.getColor(context, R.color.hr_zone_warm_up_color),
context.getResources().getColor(R.color.hr_zone_easy_color), ContextCompat.getColor(context, R.color.hr_zone_warm_up_color),
context.getResources().getColor(R.color.hr_zone_aerobic_color), ContextCompat.getColor(context, R.color.hr_zone_easy_color),
context.getResources().getColor(R.color.hr_zone_threshold_color), ContextCompat.getColor(context, R.color.hr_zone_aerobic_color),
context.getResources().getColor(R.color.hr_zone_maximum_color), ContextCompat.getColor(context, R.color.hr_zone_threshold_color),
ContextCompat.getColor(context, R.color.hr_zone_maximum_color),
}; };
for (int i = zoneOrder.size() - 1; i >= 0; i--) { for (int i = zoneOrder.size() - 1; i >= 0; i--) {
double timeInZone = HRZones[i]; double timeInZone = HRZones[i];
@@ -856,14 +853,11 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
} }
} }
// Average the things that should be averaged // Average the things that should be averaged
if (speedCount > 0) int avgStepRate = (int) ((summary.getStepCount() / ((float) dataSamples.size() * (float) dataDelta)) * 60.0f); // steps per minute
speed = (int)((float)speed / speedCount);
if (cadenceCount > 0) if (cadenceCount > 0)
cadence = cadence / cadenceCount; cadence = cadence / cadenceCount;
avgStepRate = (int)((summary.getStepCount() / ((float)dataSamples.size() * (float)dataDelta)) * 60.0f); // steps per minute
if (stepLengthCount > 0) if (stepLengthCount > 0)
stepLength = stepLength / stepLengthCount; stepLength = stepLength / stepLengthCount;
if (groundContactTimeCount > 0) if (groundContactTimeCount > 0)
@@ -886,10 +880,10 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
avgAltitude = avgAltitude / altitudeCount; avgAltitude = avgAltitude / altitudeCount;
if (speedCount > 0) { if (speedCount > 0) {
if(ActivityKind.isSwimActivity(type)) { if (ActivityKind.isSwimActivity(type)) {
summaryData.add(ActivitySummaryEntries.PACE_MAX, 100.0f / (maxSpeed/ 10f) , ActivitySummaryEntries.UNIT_SECONDS_PER_100_METERS); summaryData.add(ActivitySummaryEntries.PACE_MAX, 100.0f / (maxSpeed / 10f), ActivitySummaryEntries.UNIT_SECONDS_PER_100_METERS);
} else if (ActivityKind.isPaceActivity(type)) { } else if (ActivityKind.isPaceActivity(type)) {
summaryData.add(ActivitySummaryEntries.PACE_MAX,(60f / ((maxSpeed/ 10f) * 3.6)) * 60f , ActivitySummaryEntries.UNIT_SECONDS_PER_KM); summaryData.add(ActivitySummaryEntries.PACE_MAX, (60f / ((maxSpeed / 10f) * 3.6)) * 60f, ActivitySummaryEntries.UNIT_SECONDS_PER_KM);
} else { } else {
summaryData.add(ActivitySummaryEntries.SPEED_MAX, maxSpeed / 10f, ActivitySummaryEntries.UNIT_METERS_PER_SECOND); summaryData.add(ActivitySummaryEntries.SPEED_MAX, maxSpeed / 10f, ActivitySummaryEntries.UNIT_METERS_PER_SECOND);
} }
@@ -1148,7 +1142,7 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
final List<ActivitySummaryValue> columns = new LinkedList<>(); final List<ActivitySummaryValue> columns = new LinkedList<>();
columns.add(new ActivitySummaryValue(currentIndex++, ActivitySummaryEntries.UNIT_NONE)); columns.add(new ActivitySummaryValue(currentIndex++, ActivitySummaryEntries.UNIT_NONE));
columns.add(new ActivitySummaryValue(getSwimStyle(sample.getSwimType()), ActivitySummaryEntries.UNIT_NONE)); columns.add(new ActivitySummaryValue(getSwimStyle(sample.getSwimType()), ActivitySummaryEntries.UNIT_NONE));
String segmentDistanceUnit = sample.getType() == 1?ActivitySummaryEntries.UNIT_YARD:ActivitySummaryEntries.UNIT_METERS; String segmentDistanceUnit = sample.getType() == 1 ? ActivitySummaryEntries.UNIT_YARD : ActivitySummaryEntries.UNIT_METERS;
columns.add(new ActivitySummaryValue(sample.getDistance(), segmentDistanceUnit)); columns.add(new ActivitySummaryValue(sample.getDistance(), segmentDistanceUnit));
columns.add(new ActivitySummaryValue(sample.getTime(), ActivitySummaryEntries.UNIT_SECONDS)); columns.add(new ActivitySummaryValue(sample.getTime(), ActivitySummaryEntries.UNIT_SECONDS));
@@ -1166,7 +1160,7 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser {
columns2.add(new ActivitySummaryValue("", ActivitySummaryEntries.UNIT_NONE)); columns2.add(new ActivitySummaryValue("", ActivitySummaryEntries.UNIT_NONE));
columns2.add(new ActivitySummaryValue(sample.getStrokes(), ActivitySummaryEntries.UNIT_STROKES)); columns2.add(new ActivitySummaryValue(sample.getStrokes(), ActivitySummaryEntries.UNIT_STROKES));
columns2.add(new ActivitySummaryValue(sample.getAvgSwolf(), ActivitySummaryEntries.UNIT_NONE)); columns2.add(new ActivitySummaryValue(sample.getAvgSwolf(), ActivitySummaryEntries.UNIT_NONE));
String segmentPaceUnit = sample.getType() == 1?ActivitySummaryEntries.UNIT_SECONDS_PER_100_YARDS:ActivitySummaryEntries.UNIT_SECONDS_PER_100_METERS; String segmentPaceUnit = sample.getType() == 1 ? ActivitySummaryEntries.UNIT_SECONDS_PER_100_YARDS : ActivitySummaryEntries.UNIT_SECONDS_PER_100_METERS;
columns2.add(new ActivitySummaryValue(sample.getPace(), segmentPaceUnit)); columns2.add(new ActivitySummaryValue(sample.getPace(), segmentPaceUnit));
@@ -26,10 +26,9 @@ import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind;
public class HuaweiWorkoutUtils { public class HuaweiWorkoutUtils {
private static final Map<ActivityKind, Integer> activityHRZoneType = createActivityHRZoneType(); private static final Map<ActivityKind, Integer> activityHRZoneType = createActivityHRZoneType();
//TODO: discover and add more activity types. Should be same as in the watch. //TODO: discover and add more activity types. Should be same as in the watch.
private static Map<ActivityKind, Integer> createActivityHRZoneType() { private static Map<ActivityKind, Integer> createActivityHRZoneType() {
Map<ActivityKind, Integer> result = new HashMap<>(); final Map<ActivityKind, Integer> result = new HashMap<>();
result.put(ActivityKind.RUNNING, HeartRateZonesConfig.TYPE_UPRIGHT); result.put(ActivityKind.RUNNING, HeartRateZonesConfig.TYPE_UPRIGHT);
result.put(ActivityKind.WALKING, HeartRateZonesConfig.TYPE_UPRIGHT); result.put(ActivityKind.WALKING, HeartRateZonesConfig.TYPE_UPRIGHT);
result.put(ActivityKind.CYCLING, HeartRateZonesConfig.TYPE_SITTING); result.put(ActivityKind.CYCLING, HeartRateZonesConfig.TYPE_SITTING);
@@ -60,5 +59,4 @@ public class HuaweiWorkoutUtils {
} }
return null; return null;
} }
} }
@@ -16,7 +16,6 @@
along with this program. If not, see <https://www.gnu.org/licenses/>. */ along with this program. If not, see <https://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests; package nodomain.freeyourgadget.gadgetbridge.service.devices.huawei.requests;
import android.bluetooth.BluetoothGattCharacteristic;
import android.content.Context; import android.content.Context;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;