我正在使用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之外,以便一旦按下按钮就可以存储该值。然后只需将其与按下按钮时存储的值进行比较即可。

10-06 06:57