我正在使用android传感器,特别是TYPE_STEP_COUNTER。 TYPE_STEP_COUNTER返回的值一直在增加,并且无法重置(据我所知)。我需要做的是获取从用户按下按钮开始执行的步骤数。
我会做:
int steps = overallTotal - totalWhenButtonPressed
如何获得totalWhenButtonPressed值?
我不能做
totalWhenButtonPress = event.values[0]
,因为值不断变化。 最佳答案
它应该像这样大致工作
private int mLatestValue;
private int mButtonPressedValue;
void onCreate(..) {
Sensor stepCtr = sm.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
sm.registerListener(mSensorCounter, stepCtr, SensorManager.SENSOR_DELAY_NORMAL);
Button button = button.setOnClickListener(mButtonClick);
}
private OnClickListener mButtonClick = new OnClickListerner() {
public void onClick(View view) {
mButtonPressedValue = mLatestValue;
}
}
private SensorEventListener mSensorCounter = new SensorEventListener() {
public void onSensorChanged(SensorEvent event) {
mLatestValue = Math.round(event.values[0]);
txtStepVals.setText("CurrSteps = " + mLatestValue + "\nSteps: " + (mLatestValue - mButtonPressedValue));
}
};
您需要将当前传感器存储在
SensorEventListener
之外,以便一旦按下按钮就可以存储该值。然后只需将其与按下按钮时存储的值进行比较即可。