Como fazer um cronômetro em J2ME?

2 respostas
F

Eu preciso fazer um cronômetro que após o botão iniciar ter sido pressionado, fica mostrando o tempo que foi decorrido. Cada vez que o botão LAP seja pressionado, ele grave o tempo decorrido desde a última volta. Antes de pressionar o botão iniciar, o usuário deve fornecer o peso e a distância de uma volta, e o cronômetro deverá calcular qual foi a volta mais rápida, a volta mais lenta, a km por hora média em todas as voltas e o tempo médio que ele gastou por volta.

Cada vez que o usuário apertar o botão lap, o cronometro registra o tempo de uma volta.

Não se sabe o número de voltas que ele vai dar.

Eu já iniciei o desenvolvimento da classe, quem quiser, eu mando por e-mail. (Não consegui fazer a formatação de código funcionar aqui! E o código ficou todo bagunçado!)

Fazer os últimos cálculos e exibir eu até sei, mas não estou sabendo fazer mostrar o tempo correndo na tela.

2 Respostas

T

Para fazer a formatação de código funcionar, use o botãozinho “code” - por exemplo:

F

Hummmm… vamos tentar

import java.util.Date;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.StringItem;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class CronometroAgora extends MIDlet implements CommandListener {

	private Display tela;

	private Form formCronometro;
	private Form formResultados;

	private TextField txtPeso;

	private TextField txtVolta;

	private StringItem strTime, voltaMaisRapida, voltaMaisLenta,
			kmPorHoraMedia, tempoMedioVolta, caloriasGastas;

	private Command limpar, iniciar, lap, finalizar;

	public CronometroAgora() {
		// criação do formulário
		this.formCronometro = new Form("Cronômetro");

		// criação dos textfields
		this.txtPeso = new TextField("Peso         :", "", 20,
				TextField.DECIMAL);
		this.txtVolta = new TextField("Volta (em km):", "", 20,
				TextField.DECIMAL);

		// adiciona-se os componentes ao Form Calculadora
		this.formCronometro.append(this.txtPeso);
		this.formCronometro.append(this.txtVolta);

		this.strTime = new StringItem("", "");
		this.formCronometro.append(this.strTime);

		// definição dos botões
		this.limpar = new Command("Limpar", Command.SCREEN, 0);
		this.iniciar = new Command("Iniciar", Command.SCREEN, 1);
		this.lap = new Command("Lap", Command.SCREEN, 2);
		this.finalizar = new Command("Finalizar", Command.SCREEN, 3);

		this.formCronometro.addCommand(this.limpar);
		this.formCronometro.addCommand(this.iniciar);
		this.formCronometro.addCommand(this.lap);
		this.formCronometro.addCommand(this.finalizar);

		this.formCronometro.setCommandListener(this);

	}

	protected void startApp() throws MIDletStateChangeException {
		this.tela = Display.getDisplay(this);
		this.tela.setCurrent(this.formCronometro);

	}

	protected void pauseApp() {
		// TODO Auto-generated method stub

	}

	protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
		// TODO Auto-generated method stub

	}

	public void commandAction(Command c, Displayable d) {

		float peso = Float.parseFloat(txtPeso.getString());
		float volta = Float.parseFloat(txtVolta.getString());
		long dataInicio = System.currentTimeMillis();

		long dataFim;
		long diff;
		String strData;

		if (c == this.limpar) {
			txtPeso.setString("");
			txtVolta.setString("");
			this.tela.setCurrentItem(txtPeso);

		}

		if (c == this.iniciar) {

			while (c != this.lap) {
				dataInicio = System.currentTimeMillis();
				dataFim = System.currentTimeMillis();
				if (dataFim != dataInicio) {
					diff = dataFim - dataInicio;
					String strDiff = String.valueOf(diff);
					this.strTime = new StringItem(strDiff, strDiff);
				}
			}

		}

		if (c == this.finalizar) {
			this.formResultados = new Form("Resultados");
			
this.voltaMaisRapida = new StringItem("", "Volta Mais Rápida: ");
this.voltaMaisRapida = new StringItem("", "Volta Mais Lenta: ");
this.tempoMedioVolta = new StringItem("", "Tempo Médio: ");
this.kmPorHoraMedia = new StringItem("", "Km/h Médio: ");
this.caloriasGastas = new StringItem("", "Calorias Gastas: ");
			
			
this.formResultados.append(this.voltaMaisRapida);
this.formResultados.append(this.voltaMaisLenta);
this.formResultados.append(this.tempoMedioVolta);
this.formResultados.append(this.kmPorHoraMedia);
this.formResultados.append(this.caloriasGastas);

this.tela = Display.getDisplay(this);
this.tela.setCurrent(this.formResultados);
		}

	}

}
Criado 10 de maio de 2006
Ultima resposta 10 de mai. de 2006
Respostas 2
Participantes 2