Ver la Versión Completa : Duda con mi Primer Programa
leor285
12/03/10, 05:03:29
Hola que tal gente?? hace tiempo q leo el foro este.. desde hace casi 2 años cuando planeaba comprar un Htc Diamond, q luego no compre x ciertas complicaciones, pero termine en un Samsung Omnia(el cual me duro 4 dias nomas, desp me lo robaron :taz: :( ) y luego cuando empece a planear comprar mi actual Milestone segui entrando, aunque es la primera vez q posteo (creo), ya hare mi correspondiente precentacion en la parte de precentanciones..
Bueno ahora si, Con uds mi duda :
Estoy intentando hacer un cronometro, y tuve un par de problemas q no pude resolver googleando..
el problema principal es con los hilos, tengo una clase creada donde esta el hilo con su implements Runnable..
cuando la instancio a esta clase en la clase donde quiero ejecutar el hilo, no se con que metodo correr el hilo, en java lo hacia con .Start() pero desde android no se con que metodo correrlo.
y el otro problema que tengo es que tampoco tengo el metodo sleep() q en java lo usaba para pausar el hilo y hacer q pasen los segundos.. me aparece el metodo wait(), pero nose si hara lo mismo o no..
Muchas gracias! espero q alguno sepa responder! http://www.foromilestone.com.ar/Smileys/default/cheesy.gif
leor285
12/03/10, 09:13:59
Gente, pude resolver los problemas resultaron ser boludeces.. y eran las 2 x lo mismo, habia instanciado la clase del hilo como Runnable y era Thread.. jaja soy un pelotudo xD
Ahora mi problema es otro, lo q me pasa es q el cronometro cuenta hasta 2 y se detine.. les dejo el Codigo fuente x si alguno se da cuenta de q puede ser..
Clase Principal
package Android.Com.Cronometro;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class Cron extends Activity {
/** Called when the activity is first created. */
public TextView txtTiempo;
Hilo cron;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txtTiempo = (TextView) findViewById(R.id.ConTiempo);
final Button btn = (Button) findViewById(R.id.BtnAccion);
cron = new Hilo(txtTiempo);
cron.start();
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(btn.getText().equals("Iniciar Cronometro"))
{
cron.continuar();
btn.setText("Pausar");
}
else
{
if(btn.getText().equals("Pausar"))
{
cron.pausar();
btn.setText("Continuar");
}
else
{
cron.continuar();
btn.setText("Pausar");
}
}
}
});
}
}
Clase del Hilo
package Android.Com.Cronometro;
import android.widget.TextView;
public class Hilo extends Thread{
TextView tvTime;
private boolean detenido = false;
private boolean pausado =true;
public Hilo(TextView t) {
tvTime = t;
}
int minutos=00, segundos=00, horas=00;
public void run()
{
while(!this.detenido)
{
while(!this.pausado)
{
try {
if (segundos == 59) {
segundos = 00;
minutos++;
}
if (minutos == 59) {
minutos = 00;
horas++;
}
segundos++;
tvTime.setText(horas + ":" + minutos + ":" + segundos);
sleep(1000);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
public void pausar()
{
this.pausado = true;
}
public void continuar()
{
this.pausado = false;
}
public void detener()
{
this.pausar();
this.detenido = true;
}
public boolean isDetenido() {
return detenido;
}
public boolean isPausado() {
return pausado;
}
}
El codigo esta bastante "beta", es mi primer programa x ahora solo quiero hacerlo andar.. desp me pondre a depurar detalles y hacer la version final.. Muchas gracias!
Hola.
Yo no te puedo ayudar con tu problema, ya que no soy programador, pero me ha chocado un poco la forma que tienes de calcular el tiempo... con un sleep 1000?, no se supone que eso ya es un segundo? El resto del tiempo empleado en ejecutar las instrucciones te va a crear una medida de tiempo muy poco precisa (eso creo, vamos).
No te lo tomes a mal..., pero te aconsejo que uses otro método, no se si será el mejor, pero creo que lo ideal sería usar el RTC (real time clock).
Seguro que android ya proporciona clases y funciones para hacerlo.
Saludos
diamant-x
29/03/10, 15:52:27
A pesar que he visto que ya lo has solucionado en otro foro (http://www.android-spa.com/viewtopic.php?t=5859&sid=52caf74605739a35496349bdd13d15ab) te pongo aqui lo qu eencontré buscanod una funcion que me actualizase automaticamente una interfaz, seguramente podrás mejorar el cronometro con ello.
http://developer.android.com/intl/de/reference/android/app/AlarmManager.html
Gracias por compartirlo compi :)
leor285
16/04/10, 05:19:10
Gracias a los q respondieron, si efectivamente ya lo habia podido solucionar, y respecto a lo q dicen de la precision, le cambie el sleep x 10 para tener precision de centisimas, aunque sinceramente poco me importaba la precision, xq el objetivo del programa era aprender a programar algo en Android..
vBulletin® v3.8.1, Copyright ©2000-2025, Jelsoft Enterprises Ltd.