public void endCalibrateOptions(View view) {

    mEngine.storeCalibvalue();

    mEngine.stop_engine();

    showMessage("Calibración guardada.");

    calibrateAction();
  }
  /** Call back function when an menu option is selected. */
  public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
      case CALIBRATE_OPTION:
        if (mCalib) {
          showMessage("Calibración no guardada.");
          mEngine.stop_engine();
          decibelsTx.setText("Nivel de Ruido: 0dB");
          findViewById(R.id.lytButtons).setVisibility(View.VISIBLE);
        } else if (mRunning) {
          showMessage("Finalice el monitoreo para realizar la calibración");
          break;
        }

        calibrateAction();
        break;
      case ABOUT_OPTION:
        if (mCalib || mRunning) {
          showMessage("Por favor termine el proceso actual para continuar con esta opción.");
          break;
        }

        about();
        break;
    }
    return true;
  }
  /** Parar analisis */
  public void stopAlarm() {

    if (mRunning) {
      mEngine.stop_engine();
      mRunning = false;
      txtAlertStatus.setText(R.string.alerting_status_off);
      txtAlertStatus.setTextColor(Color.GRAY);
      decibelsTx.setText("0dB");
    }
  }
  /** Iniciar analisis */
  public void startAlarm() {

    // mCalib = false;
    txtAlertStatus.setText(R.string.alerting_status_on);
    txtAlertStatus.setTextColor(Color.GREEN);
    mMax = false;
    mLog = false;
    mMode = false;
    mHitCount = 0;
    mTickCount = 0;

    mEngine = new SoundMeterEngine(mhandle, mContext);
    mEngine.start_engine();

    mRunning = true;
  }
  /** Calibrar analisis */
  public void calibrateAction() {

    if (mCalib) {
      findViewById(R.id.calibrationLayout).setVisibility(View.INVISIBLE);
      mCalib = false;
      findViewById(R.id.lytButtons).setVisibility(View.VISIBLE);
      decibelsTx.setText("0dB");

    } else {

      mEngine = new SoundMeterEngine(mhandle, mContext);
      mEngine.start_engine();
      showMessage(
          "Está en modo calibración\nAjuste los parámetros y guarde los cambios "
              + "pulsando el botón GUARDAR para continuar");

      findViewById(R.id.calibrationLayout).setVisibility(View.VISIBLE);
      findViewById(R.id.lytButtons).setVisibility(View.INVISIBLE);
      mCalib = true;
    }
  }
  public void lessTolerance(View view) {

    mEngine.calibDown();
  }
 public void moreTolerance(View view) {
   mEngine.calibUp();
 }
 /** ******** Implementation ******* */
 public void setMeterMode(String mode) {
   mEngine.setMode(mode);
 }