mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2026-07-31 07:44:24 +02:00
Huawei: cleanup code
This commit is contained in:
+6
-12
@@ -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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
-1
@@ -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> {
|
||||||
|
|
||||||
|
|||||||
-19
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-12
@@ -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);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-2
@@ -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;
|
||||||
|
|
||||||
|
|||||||
+42
-48
@@ -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));
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
-3
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
-1
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user