public void toggleStepMode(View view) {
    if (!stepMode) {
      forwardButton.setVisibility(View.INVISIBLE);
      backwardButton.setVisibility(View.INVISIBLE);
      toggleButton.setVisibility(View.INVISIBLE);
      stepButton.setText("Switch to Dive Mode");

      forwardMotionExecutor.setMotion(ForwardMotionExecutor.MOTION_DECELERATE);

      sensorManager.unregisterListener(spacialSensorListener, gravField);
      sensorManager.unregisterListener(spacialSensorListener, magneticField);
      sensorManager.registerListener(
          spacialSensorListener, stepSensor, SensorManager.SENSOR_DELAY_GAME);
    } else {
      forwardButton.setVisibility(View.VISIBLE);
      backwardButton.setVisibility(View.VISIBLE);
      toggleButton.setVisibility(View.VISIBLE);
      stepButton.setText("Switch to Step Mode");

      stepMode = false;
      forwardMotionExecutor.setMotion(ForwardMotionExecutor.MOTION_DECELERATE);

      sensorManager.unregisterListener(spacialSensorListener, stepSensor);
      sensorManager.registerListener(
          spacialSensorListener, gravField, SensorManager.SENSOR_DELAY_GAME);
      sensorManager.registerListener(
          spacialSensorListener, magneticField, SensorManager.SENSOR_DELAY_GAME);
    }
  }
  @Override
  protected void onPause() {
    super.onPause();

    bluetoothTransmitter.closeBluetoothSocket();
    forwardMotionExecutor.setMotion(ForwardMotionExecutor.MOTION_REMOVE_ALL);
    sensorManager.unregisterListener(spacialSensorListener);
  }
 public void toggleDriveMode(View view) {
   if (!gyroMode) {
     forwardButton.setVisibility(View.INVISIBLE);
     backwardButton.setVisibility(View.INVISIBLE);
     gyroMode = true;
     toggleButton.setText("Switch to Buttons");
   } else {
     forwardButton.setVisibility(View.VISIBLE);
     backwardButton.setVisibility(View.VISIBLE);
     gyroMode = false;
     toggleButton.setText("Switch to Gyro Mode");
   }
   spacialSensorListener.setGyroMode(gyroMode);
   forwardMotionExecutor.setMotion(ForwardMotionExecutor.MOTION_DECELERATE);
 }
  @Override
  protected void onResume() {
    super.onResume();
    if (macAddress != null) {
      bluetoothTransmitter.createBluetoothSocket(Arrays.asList(macAddress));
    }

    forwardMotionExecutor.setMotion(ForwardMotionExecutor.MOTION_DECELERATE);

    if (stepMode) {
      sensorManager.registerListener(
          spacialSensorListener, stepSensor, SensorManager.SENSOR_DELAY_GAME);
    } else {
      sensorManager.registerListener(
          spacialSensorListener, magneticField, SensorManager.SENSOR_DELAY_GAME);
      sensorManager.registerListener(
          spacialSensorListener, gravField, SensorManager.SENSOR_DELAY_GAME);
    }
  }