mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-11-28 04:46:51 +01:00
Standardize and hide fake sleep movement intensity
This commit is contained in:
parent
8ae8898a89
commit
05c707bdfb
@ -210,7 +210,34 @@ public abstract class AbstractActivityChartFragment<D extends ChartsData> extend
|
|||||||
ActivitySample sample = samples.get(i);
|
ActivitySample sample = samples.get(i);
|
||||||
ActivityKind type = sample.getKind();
|
ActivityKind type = sample.getKind();
|
||||||
int ts = tsTranslation.shorten(sample.getTimestamp());
|
int ts = tsTranslation.shorten(sample.getTimestamp());
|
||||||
float value = type != ActivityKind.NOT_WORN ? sample.getIntensity() : Y_VALUE_DEEP_SLEEP;
|
final float value;
|
||||||
|
if (type != ActivityKind.NOT_WORN) {
|
||||||
|
if (ActivityKind.isSleep(type) && sample.getIntensity() <= 0) {
|
||||||
|
switch (type) {
|
||||||
|
case SLEEP_ANY:
|
||||||
|
case AWAKE_SLEEP:
|
||||||
|
value = 0.50f;
|
||||||
|
break;
|
||||||
|
case DEEP_SLEEP:
|
||||||
|
value = 0.20f;
|
||||||
|
break;
|
||||||
|
case LIGHT_SLEEP:
|
||||||
|
value = 0.30f;
|
||||||
|
break;
|
||||||
|
case REM_SLEEP:
|
||||||
|
value = 0.40f;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
value = Y_VALUE_DEEP_SLEEP;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
value = sample.getIntensity();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
value = Y_VALUE_DEEP_SLEEP;
|
||||||
|
}
|
||||||
|
|
||||||
// do not interpolate NOT_WORN on any side
|
// do not interpolate NOT_WORN on any side
|
||||||
boolean interpolate = !(last_type == ActivityKind.NOT_WORN || type == ActivityKind.NOT_WORN);
|
boolean interpolate = !(last_type == ActivityKind.NOT_WORN || type == ActivityKind.NOT_WORN);
|
||||||
float interpolation_value = interpolate ? value : last_value;
|
float interpolation_value = interpolate ? value : last_value;
|
||||||
|
@ -75,6 +75,8 @@ public class SleepChartFragment extends AbstractActivityChartFragment<SleepChart
|
|||||||
private TextView lowestHrText;
|
private TextView lowestHrText;
|
||||||
private TextView highestHrText;
|
private TextView highestHrText;
|
||||||
private TextView movementIntensityText;
|
private TextView movementIntensityText;
|
||||||
|
private LinearLayout movementIntensityTextWrapper;
|
||||||
|
private LinearLayout dummyTile;
|
||||||
private TextView sleepDateText;
|
private TextView sleepDateText;
|
||||||
private int heartRateMin = 0;
|
private int heartRateMin = 0;
|
||||||
private int heartRateMax = 0;
|
private int heartRateMax = 0;
|
||||||
@ -254,7 +256,9 @@ public class SleepChartFragment extends AbstractActivityChartFragment<SleepChart
|
|||||||
intensityTotal = mcd.getIntensityTotal();
|
intensityTotal = mcd.getIntensityTotal();
|
||||||
lowestHrText.setText(String.valueOf(heartRateMin != 0 ? heartRateMin : "-"));
|
lowestHrText.setText(String.valueOf(heartRateMin != 0 ? heartRateMin : "-"));
|
||||||
highestHrText.setText(String.valueOf(heartRateMax != 0 ? heartRateMax : "-"));
|
highestHrText.setText(String.valueOf(heartRateMax != 0 ? heartRateMax : "-"));
|
||||||
movementIntensityText.setText(intensityTotal != 0 ? new DecimalFormat("###.#").format(intensityTotal) : "-");
|
movementIntensityText.setText(intensityTotal > 0 ? new DecimalFormat("###.#").format(intensityTotal) : "-");
|
||||||
|
movementIntensityTextWrapper.setVisibility(intensityTotal > 0 ? View.VISIBLE : View.GONE);
|
||||||
|
dummyTile.setVisibility(intensityTotal > 0 ? View.VISIBLE : View.GONE);
|
||||||
|
|
||||||
mSleepAmountChart.setHoleRadius(85);
|
mSleepAmountChart.setHoleRadius(85);
|
||||||
mSleepAmountChart.setDrawEntryLabels(false);
|
mSleepAmountChart.setDrawEntryLabels(false);
|
||||||
@ -385,6 +389,8 @@ public class SleepChartFragment extends AbstractActivityChartFragment<SleepChart
|
|||||||
lowestHrText = rootView.findViewById(R.id.sleep_hr_lowest);
|
lowestHrText = rootView.findViewById(R.id.sleep_hr_lowest);
|
||||||
highestHrText = rootView.findViewById(R.id.sleep_hr_highest);
|
highestHrText = rootView.findViewById(R.id.sleep_hr_highest);
|
||||||
movementIntensityText = rootView.findViewById(R.id.sleep_movement_intensity);
|
movementIntensityText = rootView.findViewById(R.id.sleep_movement_intensity);
|
||||||
|
movementIntensityTextWrapper = rootView.findViewById(R.id.sleep_chart_legend_movement_intensity_wrapper);
|
||||||
|
dummyTile = rootView.findViewById(R.id.sleep_chart_legend_dummy_tile);
|
||||||
sleepDateText = rootView.findViewById(R.id.sleep_date);
|
sleepDateText = rootView.findViewById(R.id.sleep_date);
|
||||||
|
|
||||||
mSleepchartInfo.setMaxLines(sleepLinesLimit);
|
mSleepchartInfo.setMaxLines(sleepLinesLimit);
|
||||||
|
@ -40,6 +40,7 @@ import nodomain.freeyourgadget.gadgetbridge.entities.CmfSleepStageSample;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
|
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
|
||||||
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;
|
||||||
|
|
||||||
public class CmfActivitySampleProvider extends AbstractSampleProvider<CmfActivitySample> {
|
public class CmfActivitySampleProvider extends AbstractSampleProvider<CmfActivitySample> {
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(CmfActivitySampleProvider.class);
|
private static final Logger LOG = LoggerFactory.getLogger(CmfActivitySampleProvider.class);
|
||||||
@ -166,18 +167,7 @@ public class CmfActivitySampleProvider extends AbstractSampleProvider<CmfActivit
|
|||||||
|
|
||||||
final ActivityKind sleepRawKind = sleepStageToActivityKind(sleepStageSample.getStage());
|
final ActivityKind sleepRawKind = sleepStageToActivityKind(sleepStageSample.getStage());
|
||||||
sample.setRawKind(sleepRawKind.getCode());
|
sample.setRawKind(sleepRawKind.getCode());
|
||||||
|
sample.setRawIntensity(ActivitySample.NOT_MEASURED);
|
||||||
switch (sleepRawKind) {
|
|
||||||
case DEEP_SLEEP:
|
|
||||||
sample.setRawIntensity(20);
|
|
||||||
break;
|
|
||||||
case LIGHT_SLEEP:
|
|
||||||
sample.setRawIntensity(30);
|
|
||||||
break;
|
|
||||||
case REM_SLEEP:
|
|
||||||
sample.setRawIntensity(40);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,6 +34,7 @@ import nodomain.freeyourgadget.gadgetbridge.entities.GarminEventSample;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.entities.GarminSleepStageSample;
|
import nodomain.freeyourgadget.gadgetbridge.entities.GarminSleepStageSample;
|
||||||
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.service.devices.garmin.fit.fieldDefinitions.FieldDefinitionSleepStage;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.garmin.fit.fieldDefinitions.FieldDefinitionSleepStage;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.RangeMap;
|
import nodomain.freeyourgadget.gadgetbridge.util.RangeMap;
|
||||||
|
|
||||||
@ -177,21 +178,7 @@ public class GarminActivitySampleProvider extends AbstractSampleProvider<GarminA
|
|||||||
final ActivityKind sleepType = stagesMap.get(ts);
|
final ActivityKind sleepType = stagesMap.get(ts);
|
||||||
if (sleepType != null && !sleepType.equals(ActivityKind.UNKNOWN)) {
|
if (sleepType != null && !sleepType.equals(ActivityKind.UNKNOWN)) {
|
||||||
sample.setRawKind(sleepType.getCode());
|
sample.setRawKind(sleepType.getCode());
|
||||||
|
sample.setRawIntensity(ActivitySample.NOT_MEASURED);
|
||||||
switch (sleepType) {
|
|
||||||
case AWAKE_SLEEP:
|
|
||||||
sample.setRawIntensity(50);
|
|
||||||
break;
|
|
||||||
case DEEP_SLEEP:
|
|
||||||
sample.setRawIntensity(20);
|
|
||||||
break;
|
|
||||||
case LIGHT_SLEEP:
|
|
||||||
sample.setRawIntensity(30);
|
|
||||||
break;
|
|
||||||
case REM_SLEEP:
|
|
||||||
sample.setRawIntensity(40);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,6 +34,7 @@ import nodomain.freeyourgadget.gadgetbridge.entities.XiaomiSleepStageSample;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.entities.XiaomiSleepTimeSample;
|
import nodomain.freeyourgadget.gadgetbridge.entities.XiaomiSleepTimeSample;
|
||||||
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.util.RangeMap;
|
import nodomain.freeyourgadget.gadgetbridge.util.RangeMap;
|
||||||
|
|
||||||
public class XiaomiSampleProvider extends AbstractSampleProvider<XiaomiActivitySample> {
|
public class XiaomiSampleProvider extends AbstractSampleProvider<XiaomiActivitySample> {
|
||||||
@ -191,18 +192,7 @@ public class XiaomiSampleProvider extends AbstractSampleProvider<XiaomiActivityS
|
|||||||
final ActivityKind sleepType = stagesMap.get(ts);
|
final ActivityKind sleepType = stagesMap.get(ts);
|
||||||
if (sleepType != null && !sleepType.equals(ActivityKind.UNKNOWN)) {
|
if (sleepType != null && !sleepType.equals(ActivityKind.UNKNOWN)) {
|
||||||
sample.setRawKind(sleepType.getCode());
|
sample.setRawKind(sleepType.getCode());
|
||||||
|
sample.setRawIntensity(ActivitySample.NOT_MEASURED);
|
||||||
switch (sleepType) {
|
|
||||||
case DEEP_SLEEP:
|
|
||||||
sample.setRawIntensity(20);
|
|
||||||
break;
|
|
||||||
case LIGHT_SLEEP:
|
|
||||||
sample.setRawIntensity(30);
|
|
||||||
break;
|
|
||||||
case REM_SLEEP:
|
|
||||||
sample.setRawIntensity(40);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -214,6 +214,7 @@
|
|||||||
android:textSize="12sp" />
|
android:textSize="12sp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/sleep_chart_legend_movement_intensity_wrapper"
|
||||||
android:layout_marginBottom="2dp"
|
android:layout_marginBottom="2dp"
|
||||||
android:layout_marginEnd="1dp"
|
android:layout_marginEnd="1dp"
|
||||||
style="@style/GridTile"
|
style="@style/GridTile"
|
||||||
@ -233,6 +234,7 @@
|
|||||||
android:textSize="12sp" />
|
android:textSize="12sp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/sleep_chart_legend_dummy_tile"
|
||||||
android:layout_marginBottom="2dp"
|
android:layout_marginBottom="2dp"
|
||||||
android:layout_marginStart="1dp"
|
android:layout_marginStart="1dp"
|
||||||
style="@style/GridTile"
|
style="@style/GridTile"
|
||||||
|
Loading…
Reference in New Issue
Block a user