Handle live activity for Mi2 and Mi1 in the same way #448
Realtime samples now use ActivitySample.NOT_MEASURED for unknown or invalid values.
This commit is contained in:
parent
8719cadc43
commit
da494cde7b
|
@ -72,8 +72,6 @@ public class LiveActivityFragment extends AbstractChartFragment {
|
||||||
private TimestampTranslation tsTranslation;
|
private TimestampTranslation tsTranslation;
|
||||||
|
|
||||||
private class Steps {
|
private class Steps {
|
||||||
private int initialSteps;
|
|
||||||
|
|
||||||
private int steps;
|
private int steps;
|
||||||
private int lastTimestamp;
|
private int lastTimestamp;
|
||||||
private int currentStepsPerMinute;
|
private int currentStepsPerMinute;
|
||||||
|
@ -90,7 +88,7 @@ public class LiveActivityFragment extends AbstractChartFragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getTotalSteps() {
|
public int getTotalSteps() {
|
||||||
return steps - initialSteps;
|
return steps;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getMaxStepsPerMinute() {
|
public int getMaxStepsPerMinute() {
|
||||||
|
@ -102,10 +100,6 @@ public class LiveActivityFragment extends AbstractChartFragment {
|
||||||
if (steps == 0) {
|
if (steps == 0) {
|
||||||
steps += stepsDelta;
|
steps += stepsDelta;
|
||||||
lastTimestamp = timestamp;
|
lastTimestamp = timestamp;
|
||||||
|
|
||||||
// if (stepsDelta > 0) {
|
|
||||||
// initialSteps = stepsDelta;
|
|
||||||
// }
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,7 +156,9 @@ public class LiveActivityFragment extends AbstractChartFragment {
|
||||||
setCurrentHeartRate(heartRate, timestamp);
|
setCurrentHeartRate(heartRate, timestamp);
|
||||||
}
|
}
|
||||||
int steps = sample.getSteps();
|
int steps = sample.getSteps();
|
||||||
addEntries(steps, timestamp);
|
if (steps != ActivitySample.NOT_MEASURED) {
|
||||||
|
addEntries(steps, timestamp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private int translateTimestampFrom(Intent intent) {
|
private int translateTimestampFrom(Intent intent) {
|
||||||
|
|
|
@ -953,7 +953,6 @@ public class MiBandSupport extends AbstractBTLEDeviceSupport {
|
||||||
sample.setRawIntensity(ActivitySample.NOT_MEASURED);
|
sample.setRawIntensity(ActivitySample.NOT_MEASURED);
|
||||||
sample.setRawKind(MiBandSampleProvider.TYPE_ACTIVITY); // to make it visible in the charts TODO: add a MANUAL kind for that?
|
sample.setRawKind(MiBandSampleProvider.TYPE_ACTIVITY); // to make it visible in the charts TODO: add a MANUAL kind for that?
|
||||||
|
|
||||||
LOG.debug("Storing realtime sample: " + sample);
|
|
||||||
provider.addGBActivitySample(sample);
|
provider.addGBActivitySample(sample);
|
||||||
|
|
||||||
// set the steps only afterwards, since realtime steps are also recorded
|
// set the steps only afterwards, since realtime steps are also recorded
|
||||||
|
@ -962,6 +961,10 @@ public class MiBandSupport extends AbstractBTLEDeviceSupport {
|
||||||
// change the value here in memory.
|
// change the value here in memory.
|
||||||
sample.setSteps(getSteps());
|
sample.setSteps(getSteps());
|
||||||
|
|
||||||
|
if (LOG.isDebugEnabled()) {
|
||||||
|
LOG.debug("realtime sample: " + sample);
|
||||||
|
}
|
||||||
|
|
||||||
Intent intent = new Intent(DeviceService.ACTION_REALTIME_SAMPLES)
|
Intent intent = new Intent(DeviceService.ACTION_REALTIME_SAMPLES)
|
||||||
.putExtra(DeviceService.EXTRA_REALTIME_SAMPLE, sample);
|
.putExtra(DeviceService.EXTRA_REALTIME_SAMPLE, sample);
|
||||||
LocalBroadcastManager.getInstance(getContext()).sendBroadcast(intent);
|
LocalBroadcastManager.getInstance(getContext()).sendBroadcast(intent);
|
||||||
|
|
|
@ -61,12 +61,17 @@ public abstract class RealtimeSamplesSupport {
|
||||||
this.steps = stepsPerMinute;
|
this.steps = stepsPerMinute;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the number of steps recorded since the last measurements. If no
|
||||||
|
* steps are available yet, ActivitySample.NOT_MEASURED is returned.
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public synchronized int getSteps() {
|
public synchronized int getSteps() {
|
||||||
if (lastSteps == 0) {
|
|
||||||
return 0; // wait until we have a delta between two samples
|
|
||||||
}
|
|
||||||
if (steps == ActivitySample.NOT_MEASURED) {
|
if (steps == ActivitySample.NOT_MEASURED) {
|
||||||
return 0;
|
return ActivitySample.NOT_MEASURED;
|
||||||
|
}
|
||||||
|
if (lastSteps == 0) {
|
||||||
|
return ActivitySample.NOT_MEASURED; // wait until we have a delta between two samples
|
||||||
}
|
}
|
||||||
int delta = steps - lastSteps;
|
int delta = steps - lastSteps;
|
||||||
if (delta < 0) {
|
if (delta < 0) {
|
||||||
|
|
|
@ -982,12 +982,22 @@ public class MiBand2Support extends AbstractBTLEDeviceSupport {
|
||||||
sample.setRawIntensity(ActivitySample.NOT_MEASURED);
|
sample.setRawIntensity(ActivitySample.NOT_MEASURED);
|
||||||
sample.setRawKind(MiBand2SampleProvider.TYPE_ACTIVITY); // to make it visible in the charts TODO: add a MANUAL kind for that?
|
sample.setRawKind(MiBand2SampleProvider.TYPE_ACTIVITY); // to make it visible in the charts TODO: add a MANUAL kind for that?
|
||||||
|
|
||||||
|
provider.addGBActivitySample(sample);
|
||||||
|
|
||||||
|
// set the steps only afterwards, since realtime steps are also recorded
|
||||||
|
// in the regular samples and we must not count them twice
|
||||||
|
// Note: we know that the DAO sample is never committed again, so we simply
|
||||||
|
// change the value here in memory.
|
||||||
|
sample.setSteps(getSteps());
|
||||||
|
|
||||||
|
if (LOG.isDebugEnabled()) {
|
||||||
|
LOG.debug("realtime sample: " + sample);
|
||||||
|
}
|
||||||
|
|
||||||
Intent intent = new Intent(DeviceService.ACTION_REALTIME_SAMPLES)
|
Intent intent = new Intent(DeviceService.ACTION_REALTIME_SAMPLES)
|
||||||
.putExtra(DeviceService.EXTRA_REALTIME_SAMPLE, sample);
|
.putExtra(DeviceService.EXTRA_REALTIME_SAMPLE, sample);
|
||||||
LocalBroadcastManager.getInstance(getContext()).sendBroadcast(intent);
|
LocalBroadcastManager.getInstance(getContext()).sendBroadcast(intent);
|
||||||
|
|
||||||
LOG.debug("Storing realtime sample: " + sample);
|
|
||||||
provider.addGBActivitySample(sample);
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LOG.warn("Unable to acquire db for saving realtime samples", e);
|
LOG.warn("Unable to acquire db for saving realtime samples", e);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue