Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 12/03/10, 05:03:29
Avatar de leor285
leor285 leor285 no está en línea
Usuario novato en la web
Mensajes: 6
 
Fecha de registro: feb 2009
Mensajes: 6
Modelo de smartphone: Diamond
Mencionado: 0 comentarios
Tagged: 0 hilos
Post Duda con mi Primer Programa

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 ) 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!
Responder Con Cita


  #2  
Viejo 12/03/10, 09:13:59
Avatar de leor285
leor285 leor285 no está en línea
Usuario novato en la web
Mensajes: 6
 
Fecha de registro: feb 2009
Mensajes: 6
Modelo de smartphone: Diamond
Mencionado: 0 comentarios
Tagged: 0 hilos
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
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
Código:
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
Código:
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!

Última edición por leor285 Día 12/03/10 a las 16:44:29
Responder Con Cita
  #3  
Viejo 29/03/10, 12:13:40
Avatar de cohone
cohone cohone no está en línea
Miembro del foro
Mensajes: 163
 
Fecha de registro: sep 2009
Mensajes: 163
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Responder Con Cita
  #4  
Viejo 29/03/10, 15:52:27
Avatar de diamant-x
diamant-x diamant-x no está en línea
Usuario muy activo
Mensajes: 1,549
 
Fecha de registro: ago 2008
Mensajes: 1,549
Versión de Radio: 2.22.23.02
Mencionado: 4 comentarios
Tagged: 0 hilos
A pesar que he visto que ya lo has solucionado en otro foro 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...rmManager.html
Responder Con Cita
  #5  
Viejo 29/03/10, 18:45:42
Avatar de vierco
vierco vierco no está en línea
Android Dev
Mensajes: 6,095
Compra y venta: (1)
 
Fecha de registro: may 2008
Localización: Pamplona
Mensajes: 6,095
Modelo de smartphone: Nexus varios
Tu operador: Orange
Mencionado: 75 comentarios
Tagged: 9 hilos
Gracias por compartirlo compi
Responder Con Cita
  #6  
Viejo 16/04/10, 05:19:10
Avatar de leor285
leor285 leor285 no está en línea
Usuario novato en la web
Mensajes: 6
 
Fecha de registro: feb 2009
Mensajes: 6
Modelo de smartphone: Diamond
Mencionado: 0 comentarios
Tagged: 0 hilos
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..
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 21:26:23 (GMT +2)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007