Quinta-feira, 17 de Julho de 2008

1ª app em J2ME

Comecei a desenvolver aplicações para mobile (J2ME), e a primeira aplicação é um localizador de horário de ônibus do Campo Magro, segue o fonte:
import java.util.Calendar;

import javax.microedition.lcdui.ChoiceGroup;
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;

public class HorarioCM extends MIDlet implements CommandListener{
private Display display;
private Form formDados;
private ChoiceGroup selDias;
private ChoiceGroup selSentido;
private TextField horario;
private Command sair;
private Command pesquisar;
private Command voltar;
private String horarioUtilCM[];
private String horarioUtilTerminal[];
private String horarioSabadoCM[];
private String horarioSabadoTerminal[];
private String horarioDomingoCM[];
private String horarioDomingoTerminal[];
private String horarioDisponiveis;

public HorarioCM() {
horarioUtilCM = new String[] {"04:55","05:21","05:32","05:42","05:53","06:03","06:13","06:24","06:34","06:45","06:55","07:06","07:16","07:26","07:37","07:47","08:00","08:12","08:25","09:03","09:41","10:19","10:57","11:23","11:48","12:13","12:39","13:04","13:36","14:20","14:58","15:36","16:14","16:40","16:52","17:05","17:18","17:30","17:45","17:54","18:06","18:19","18:32","18:44","18:56","19:08","19:25","20:05","20:48","21:26","22:04","22:42","23:30"};
horarioUtilTerminal = new String[] {"05:32","05:49","05:59","06:10","06:20","06:31","06:41","06:51","07:02","07:12","07:25","07:35","07:48","08:25","09:03","09:41","10:19","11:04","11:35","12:01","12:26","12:55","13:42","14:20","14:58","15:36","16:02","16:14","16:27","16:40","16:52","17:04","17:16","17:28","17:41","17:54","18:06","18:18","18:30","18:42","18:55","19:08","19:20","19:32","19:44","20:10","20:48","21:26","22:04","22:50","23:30","24:13"};
horarioSabadoCM = new String[] {"05:30","05:49","06:08","06:27","06:46","07:05","07:24","07:43","08:02","08:21","08:40","08:59","09:37","10:15","10:53","11:31","12:09","12:47","13:25","14:03","14:41","15:19","15:57","16:35","17:13","17:51","18:29","19:07","19:45","21:01","22:17","23:33"};
horarioSabadoTerminal = new String[] {"05:30","06:08","06:27","06:46","07:05","07:24","07:43","08:02","08:21","08:59","09:37","10:15","10:53","11:31","12:09","12:47","13:25","14:03","14:41","15:19","15:57","16:35","17:13","17:51","18:29","19:07","19:45","20:23","21:39","22:55","24:11"};
horarioDomingoCM = new String[] {"05:41","06:57","08:13","09:29","10:07","10:45","11:23","12:01","12:39","13:17","13:55","14:33","15:11","15:49","16:27","17:05","17:43","18:21","18:59","19:37","20:53","22:09","23:30"};
horarioDomingoTerminal = new String[] {"05:10","06:19","07:35","08:51","10:07","10:45","11:23","12:01","12:39","13:17","13:55","14:33","15:11","15:49","16:27","17:05","17:43","18:21","18:59","20:15","21:31","22:50","24:10"};
formDados = new Form("Horário CM");
sair = new Command("Sair", Command.EXIT, 0);
pesquisar = new Command("Pesquisar", Command.OK, 1);
voltar = new Command("Voltar", Command.OK, 0);
}

protected void destroyApp(boolean arg0) {
notifyDestroyed();
}

protected void pauseApp() {
}

protected void startApp() {
display = Display.getDisplay(this);
// SELECT DE DIAS
String[] dias = new String[] { "Útil", "Sábado", "Domingo" };
selDias = new ChoiceGroup("Dia:", ChoiceGroup.EXCLUSIVE, dias, null );
formDados.append(selDias);
// SELECT DE SENTIDO
String[] sentidos = new String[] { "Terminal", "CM" };
selSentido = new ChoiceGroup("Sentido:", ChoiceGroup.EXCLUSIVE, sentidos, null );
formDados.append(selSentido);
// TEXTFIELD DE HORARIO
Calendar agora = Calendar.getInstance();
int horas = agora.get(Calendar.HOUR_OF_DAY);
int minutos = agora.get(Calendar.MINUTE);
horario = new TextField("Horário:",horas + ":" + minutos, 5, TextField.ANY);
formDados.append(horario);
// ADICIONANDO COMANDOS
formDados.addCommand(sair);
formDados.addCommand(pesquisar);
formDados.setCommandListener(this);
display.setCurrent(formDados);
}

public void commandAction(Command c, Displayable d) {
if (c == sair) {
destroyApp(true);
} else if (c == pesquisar) {
pesquisarHorario();
mostrarHorario();
} else if (c == voltar) {
display.setCurrent(formDados);
}
}

public void pesquisarHorario() {
String horarioSelecionado = horario.getString();
String hora = horarioSelecionado.substring(0,2);
String minuto;
if(hora.charAt(1) == ':') {
hora = "0" + hora.charAt(0);
minuto = horarioSelecionado.substring(2,horarioSelecionado.length());
} else {
minuto = horarioSelecionado.substring(3,horarioSelecionado.length());
}
if(minuto.length() == 1) {
minuto = "0" + minuto;
}
String dia = selDias.getString(selDias.getSelectedIndex());
String sentido = selSentido.getString(selSentido.getSelectedIndex());
String horarioData[] = null;
if (dia.equals("Útil") && sentido.equals("Terminal")) {
horarioData = horarioUtilTerminal;
} else if (dia.equals("Útil") && sentido.equals("CM")) {
horarioData = horarioUtilCM;
} else if (dia.equals("Sábado") && sentido.equals("Terminal")) {
horarioData = horarioSabadoTerminal;
} else if (dia.equals("Sábado") && sentido.equals("CM")) {
horarioData = horarioSabadoCM;
} else if (dia.equals("Domingo") && sentido.equals("Terminal")) {
horarioData = horarioDomingoTerminal;
} else if (dia.equals("Domingo") && sentido.equals("CM")) {
horarioData = horarioDomingoCM;
}
boolean horarioFound = false;
boolean horaFound = false;
horarioDisponiveis = null;
int i = 0;
while (!horarioFound && i < horarioData.length) {
String aux_hora = horarioData[i].substring(0, 2);
String aux_min = horarioData[i].substring(3, 5);
if(aux_hora.equals(hora)) {
horaFound = true;
if(minuto.compareTo(aux_min) < 0){
horarioFound = true;
}
} else if (horaFound) {
horarioFound = true;
}
i++;
}
i=i-3;
i=(i<0) ? 0 : i;
if (i < horarioData.length && horarioFound) {
horarioDisponiveis = horarioData[i] + " - ";
i++;
int x = 0;
while (x < 5 && i < horarioData.length) {
horarioDisponiveis += horarioData[i] + " - ";
x++;
i++;
}
horarioDisponiveis = horarioDisponiveis.substring(0, (horarioDisponiveis.length()-3));
} else {
horarioDisponiveis = "Não foi encontrado nenhum horário";
}
}

public void mostrarHorario() {
Form form = new Form("Resultado da Busca");
form.append(new StringItem(null, horarioDisponiveis));
form.addCommand(sair);
form.addCommand(voltar);
form.setCommandListener(this);
display.setCurrent(form);
}
}

0 comentários: