每次启动应用程序时,如何将步数计数器重置为0?

时间:2019-05-02 19:57:38

标签: java android

如何在每次启动应用程序时将计步器重置为0?如果我关闭我的应用程序并重新启动它,计数器将从先前停止的地方继续计数。我希望它重新开始。我已经尝试将每次启动我的应用程序时将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];

1 个答案:

答案 0 :(得分:1)

仅在重新启动设备后,传感器才会重新启动。

Android Sensor API

  

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

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

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