@Override
  public void onDestroy() {
    if (mAsyncTask != null) {
      mAsyncTask.cancel(true);
      try {
        Thread.sleep(100);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
    if (mSensorManager != null) stopAccelerometer();
    super.onDestroy();

    try {
      mRawAccOutputStream.close();
    } catch (Exception ex) {
    }
  }
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    setAmbientEnabled();

    mAccBuffer = new ArrayBlockingQueue<>(Globals.ACCELEROMETER_BUFFER_CAPACITY);

    mContainerView = (BoxInsetLayout) findViewById(R.id.container);

    mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION);

    mAsyncTask = new OnSensorChangedTask();
    mAsyncTask.execute();

    stepsView = (TextView) findViewById(R.id.stepCount);
    activityView = (TextView) findViewById(R.id.activity_type);
    calView = (TextView) findViewById(R.id.calCount);
    distView = (TextView) findViewById(R.id.distCount);
    seekBar_height = (SeekBar) findViewById(R.id.height);
    heightPrint = (TextView) findViewById(R.id.heightInput);
    height = seekBar_height.getProgress() + 130;
    heightPrint.setText(height + "cm");

    seekBar_weight = (SeekBar) findViewById(R.id.weight);
    weightPrint = (TextView) findViewById(R.id.weightInput);
    weight = seekBar_weight.getProgress() + 50;
    weightPrint.setText(weight + "kg");

    seekBar_height.setOnSeekBarChangeListener(
        new SeekBar.OnSeekBarChangeListener() {
          int progress = 0;

          @Override
          public void onProgressChanged(SeekBar seekBar, int progresValue, boolean fromUser) {
            progress = progresValue;
          }

          @Override
          public void onStartTrackingTouch(SeekBar seekBar) {}

          @Override
          public void onStopTrackingTouch(SeekBar seekBar) {
            height = seekBar.getProgress() + 130;
            heightPrint.setText(height + "cm");
          }
        });

    seekBar_weight.setOnSeekBarChangeListener(
        new SeekBar.OnSeekBarChangeListener() {
          int progress = 0;

          @Override
          public void onProgressChanged(SeekBar seekBar, int progresValue, boolean fromUser) {
            progress = progresValue;
          }

          @Override
          public void onStartTrackingTouch(SeekBar seekBar) {}

          @Override
          public void onStopTrackingTouch(SeekBar seekBar) {
            weight = seekBar.getProgress() + 50;
            weightPrint.setText(weight + "kg");
          }
        });

    // Set the buttons and the text accordingly
    accelButton = (ToggleButton) findViewById(R.id.MonitorButton);
    accelButton.setChecked(isAccelRunning);
    accelButton.setOnCheckedChangeListener(
        new CompoundButton.OnCheckedChangeListener() {
          public void onCheckedChanged(CompoundButton btn, boolean isChecked) {
            if (!isAccelRunning) {
              startAccelerometer();
              accelButton.setChecked(true);
            } else {
              stopAccelerometer();
              accelButton.setChecked(false);
            }
          }
        });
  }