Implementar Cronometro con Pausa

2,179 views
Skip to first unread message

Luis x

unread,
Mar 2, 2011, 10:19:36 AM3/2/11
to desarrollad...@googlegroups.com
Buenas a todos,

Necesito ayuda porque llevo ya varias horas dandole vueltas y no lo consigo... resulta que necesito implementar un cronometro que tenga pausa, y la clase chronometer de Android tiene el metodo start() y stop(). El problema es que cuando llamo a stop() y luego a start() para simular una pausa, el contador sigue contando el tiempo INCLUYENDO el rato que ha estado parado (es decir, si lo paro en el segundo 5, espero 10 segundos, y lo vuelvo a activar, cuenta desde 15, no desde 5. No se si me explico...).

Llevo rato ya peleando con el setBase() y getBase(), y lo mas que he conseguido es reiniciarlo (es decir, que cuando le doy al Stop, y luego al Start, empiece de 0), pero esto no es lo que quiero. tambien he probado con getText() y setText(), pero nada, sigue contando el tiempo total cuando le doy al play. Llevo 2 o 3 horas googleando y todos los tutoriales que he encontrado acerca de como implementar cronometros, no contemplan la funcion pausa que es la que necesito.

Alguien me puede echar un cable por favor?

Gracias de antemano y un saludo a todos.

DiCouk

unread,
Mar 2, 2011, 10:30:36 AM3/2/11
to desarrolladores-android
Creo que el metodo start() se le puede indicar en que numero empiece,
de ser asi al momento de presionar stop() guarda en una variable por
donde iba y le al momento de darle start() pasale el valor de esa
variable y asi conseguiras que inicie donde se quedo.

Salu2.

Luis x

unread,
Mar 2, 2011, 10:37:41 AM3/2/11
to desarrollad...@googlegroups.com
Gracias por contestar... pero ya lo he estado mirando y no. El metodo start()  esta definido vacio, no acepta parametros, como puedes ver aqui:

http://developer.android.com/reference/android/widget/Chronometer.html

Alguna otra sugerencia?


--
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-a...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es.


Jc Abadia

unread,
Mar 2, 2011, 10:48:19 AM3/2/11
to desarrollad...@googlegroups.com
el tiempo que transcurrio lo estas sacando con getBase?

DiCouk

unread,
Mar 2, 2011, 10:57:44 AM3/2/11
to desarrolladores-android
Bueno encontre esto talvez te pueda funcionar:

long elapsedMillis = SystemClock.elapsedRealtime() -
mChronometer.getBase();
mChronometer.setBase(elapsedMillis);
mChronometer.start();

en pocas palabras lo que haces al momento de dar start nuevamente es
capturar el tiempo que ha transcurrido y le restas el tiempo que tenia
la base cuando le diste stop() eso te dice en donde deberia de
empezar. luego seteas la base con ese tiempo y le das start()
nuevamente.




On 2 mar, 09:37, Luis x <mande...@gmail.com> wrote:
> Gracias por contestar... pero ya lo he estado mirando y no. El metodo
> start()  esta definido vacio, no acepta parametros, como puedes ver aqui:
>
> http://developer.android.com/reference/android/widget/Chronometer.html
>
> Alguna otra sugerencia?
>

Alberto Perez

unread,
Mar 2, 2011, 11:06:47 AM3/2/11
to desarrollad...@googlegroups.com
Buenas, no me he pegado con ello, pero tiene pinta que tendrás que jugar con stop setbase y getBase.

Supongo que ya lo has visto, por si acaso


Siento la poca ayuda :-(

Un saludo

2011/3/2 Luis x <mand...@gmail.com>

Jc Abadia

unread,
Mar 2, 2011, 11:10:11 AM3/2/11
to desarrollad...@googlegroups.com
Nose si habras visto este ejemplo, me parece que es lo que estas tratando de hacer.

Si podes hechale una mirada 

Espero que te sirva de ayuda.

--

Luis x

unread,
Mar 3, 2011, 2:16:17 PM3/3/11
to desarrollad...@googlegroups.com
Gracias por la ayuda a todos, pero sigo sin conseguirlo... incluso copiando y pegando el ejemplo de aqui:
http://android-pro.blogspot.com/2010/06/android-chronometer-timer.html
y nada, sigue funcionando igual. La pausa, pausa el contador, pero al darle a reanudar, sigue contando el tiempo total.

Alguna otra sugerencia?

Gracias a todos

DiCouk

unread,
Mar 4, 2011, 2:20:06 PM3/4/11
to desarrolladores-android
Bien amigo tuve q hacer mi aplicacion de demo del cronometro que la
verdad no me habia surgido la necesidad pero con tal de ayudar y unos
10 min libres que tuve encontre lo que necesitas. en tu funcion
onclick donde mandas a llamar a tu metodo start() cambialo por esto y
lo tendras listo yo ya lo probe y al hacer stop y dar start nuevamente
me cuenta donde se quedo:


int stoppedMilliseconds = 0;

String chronoText = myChronometer.getText().toString();
String array[] = chronoText.split(":");
if (array.length == 2) {
stoppedMilliseconds = Integer.parseInt(array[0]) * 60 *
1000
+ Integer.parseInt(array[1]) * 1000;
} else if (array.length == 3) {
stoppedMilliseconds = Integer.parseInt(array[0]) * 60 * 60
* 1000
+ Integer.parseInt(array[1]) * 60 * 1000
+ Integer.parseInt(array[2]) * 1000;
}

myChronometer.setBase(SystemClock.elapsedRealtime() -
stoppedMilliseconds);
myChronometer.start();

como ves se optiene el tiempo donde se hizo el stop y luego se calcula
el tiempo que ha transcurrido una vez hecho esto es solo cuestion de
setear nuevamente el cronometro y darle start().

Ojala te haya ayudado. Salu2.

On 3 mar, 13:16, Luis x <mande...@gmail.com> wrote:
> Gracias por la ayuda a todos, pero sigo sin conseguirlo... incluso copiando
> y pegando el ejemplo de aqui:http://android-pro.blogspot.com/2010/06/android-chronometer-timer.html
> y nada, sigue funcionando igual. La pausa, pausa el contador, pero al darle
> a reanudar, sigue contando el tiempo total.
>
> Alguna otra sugerencia?
>
> Gracias a todos
>
> El 2 de marzo de 2011 17:10, Jc Abadia <juancarlosaba...@gmail.com>escribió:
>
> > Nose si habras visto este ejemplo, me parece que es lo que estas tratando
> > de hacer.
>
> > Si podes hechale una mirada
>
> >http://android-pro.blogspot.com/2010/06/android-chronometer-timer.html
>
> > Espero que te sirva de ayuda.

Luis x

unread,
Mar 5, 2011, 1:30:36 PM3/5/11
to desarrollad...@googlegroups.com
Muchísimas gracias por tu respuesta y el curro que te has pegado.... Tiene muy buna pinta el código, y estoy convencido de que funcionará. Tengo que acabar unas cosas porque como me quedé un poco "atascado" con el tema del cronómetro, al final me puse con otros temas de la aplicación, pero en cuanto los termine lo pruebo y ya te confirmo si me funciona.

Muchisimas gracias!!! ;)

Luis x

unread,
Mar 6, 2011, 11:32:32 AM3/6/11
to desarrollad...@googlegroups.com, cco...@gmail.com
Ya lo he probado... y efectivamente, funciona a la perfección!!! Muchísimas gracias! Ahora que lo ves resuelto dices.. claro.. como puede ser que no se me haya ocurrido algo tan obvio?? Pero ya ves... te ofuscas haciendo mil pruebas y al final las cosas son mas sencillas de lo que parecen.

Muchísimas gracias de nuevo, ojalá algun dia pueda devolverte el favor!

Un saludo!!
Reply all
Reply to author
Forward
0 new messages