2011-03-17 26 views
16

Estoy intentando reiniciar completamente el cronómetro y no funciona. En cambio, se está pausando. Básicamente, lo que intento hacer es hacer algo mientras el cronómetro cuenta hasta 10. Una vez hecho esto, solicitamos al usuario que intente de nuevo. En cuyo caso, queremos volver a hacer el recuento de 1 a 10 segundos. Sin embargo, el cronómetro se inicia desde el momento de pausa en lugar de comenzar 0.Reinicio del cronómetro

Aquí está el código:

_cutOfTime = 10; // constant 

se pulsa cada botón de tiempo hacer startRecording()

siempre debe iniciar el cronómetro en lugar de parada/hacer una pausa, pero hace lo contrario

protected void startRecording(){  

this._watch = (Chronometer) findViewById(R.id.chrono); 

      if (this._watch != null) 
       this._watch.setOnChronometerTickListener(new OnChronometerTickListener() { 

         @Override 
         public void onChronometerTick(Chronometer chronometer) { 
          long countUp = (SystemClock.elapsedRealtime() - chronometer.getBase())/1000; 
          Log.i(_tag, "time now: " + String.valueOf(countUp)); 

          if(countUp > _cutOfTime) 
          { 
           Log.i(_tag, "stop recording!!: "); 
           _watch.stop(); 
           stopRecordWav(); 
           launchPromptWithResults(); 
          } 
          long sec = countUp % 60; 

          String asText = "" + sec; 
          _textView.setText("Recorded: " + asText); 
         } 
        }); 


      if (_watch != null) 
      _watch.start(); 
} 

¿hay una manera de restablecer el cronómetro por lo que no se detiene, sino complet ely stop?

Respuesta

34

Cuando jugué un rato con el cronómetro, acabo de utilizar el método setBase() para establecer la base a la hora actual justo antes de llamar a start(). Dependiendo de sus necesidades exactas, puede que necesite agregar algo de lógica sobre si reiniciar el cronómetro o no antes de iniciarlo.

View.OnClickListener mStartButtonListener = new OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 
      mChronometer.setBase(SystemClock.elapsedRealtime()); 
      mChronometer.start(); 
     } 
    }; 
+0

muchas gracias! esto funcionó! wow me acabas de ahorrar tanto tiempo y pelo :) – dropsOfJupiter

+0

Excelente, me alegro de que hiciste lo que necesitas hombre – jmichalicek