首页 > 解决方案 > 每次应用启动时,如何将计步器重置为 0?

问题描述

每次启动应用程序时,如何将计步器重置为 0?如果我关闭我的应用程序并重新启动它,计数器将从之前停止的位置继续。我希望它重新开始。每次我的应用程序启动时,我已经尝试将我的 stepped textview 设置为 0,但它并没有改变任何东西。

public class HomeActivity extends AppCompatActivity implements SensorEventListener {
private TextView stepsTakenTextView;
private TextView distanceTraveledTextView;
private SensorManager sensorManager;
private  Boolean running = false;
private UserModel userModel;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);

    stepsTakenTextView = findViewById(R.id.stepsTakenTextView);
    distanceTraveledTextView = findViewById(R.id.distanceTraveledTextView);
    sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

}

@Override
protected void onResume() {
    super.onResume();
    running = true;
    Sensor countSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
    if(countSensor != null){
        sensorManager.registerListener(this, countSensor, SensorManager.SENSOR_DELAY_UI);
    }else{
        Toast.makeText(this, "Sensor not found", Toast.LENGTH_SHORT).show();
    }

}

@Override
protected void onPause() {
    super.onPause();
    running = false;
}


@Override
public void onSensorChanged(SensorEvent event) {
    if(running){
        float stepsTaken= event.values[0];

标签: javaandroid

解决方案


传感器只会在设备重新启动时重新启动。

Android 传感器 API

这种类型的传感器会返回用户在激活时自上次重新启动以来所采取的步数。该值作为浮点数返回(小数部分设置为零),并且仅在系统重新启动时重置为零...

相反,您可以执行以下操作:

  1. 启动应用程序后,立即保存传感器返回的第一个值。
  2. 每次传感器发出一个新值时,都要从中减去初始值。

推荐阅读