获取不断变化的整数的值
Getting the value of a constantly changing integer
我正在使用 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
之外,以便您可以在按下按钮后存储该值。然后简单地与按下按钮时存储的值进行比较。
我能够使用 TYPE_STEP_DETECTOR 解决问题。我没有尝试在某个时间点获取数字,而是在操作发生时更新了数字。以下代码来自SensorEventListener
的onSensorChanged方法
currSteps = currSteps + Math.round(event.values[0]);
TextView txtSessionStepVals = (TextView) findViewById(R.id.txtSessionStepValues);
txtSessionStepVals.setText("Steps this Session: " + currSteps);
我正在使用 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
之外,以便您可以在按下按钮后存储该值。然后简单地与按下按钮时存储的值进行比较。
我能够使用 TYPE_STEP_DETECTOR 解决问题。我没有尝试在某个时间点获取数字,而是在操作发生时更新了数字。以下代码来自SensorEventListener
的onSensorChanged方法currSteps = currSteps + Math.round(event.values[0]);
TextView txtSessionStepVals = (TextView) findViewById(R.id.txtSessionStepValues);
txtSessionStepVals.setText("Steps this Session: " + currSteps);