arquitetura de um programa midlet
TRANSCRIPT
DESENVOLVIMENTO DE DESENVOLVIMENTO DE APLICATIVOS APLICATIVOS
DE TELEFONIA MÓVEL NA DE TELEFONIA MÓVEL NA PLATAFORMA J2ME PLATAFORMA J2ME
Desiré Nguessan. Graduado e Mestre em Ciênciada Computação. Doutor em Engenharia daComputação. Docente na Fatec São Caetano doSul e na Universidade de Mogi das Cruzes. Atua
CURRÍCULO:
Sul e na Universidade de Mogi das Cruzes. Atuanas áreas de segurança, privacidade, middlewaresmóveis, computação nômade e difusa. Pode sercontatado em [email protected].
� Definição de um MIDLet: Conceitos de um MIDLet� Arquitetura de um programa MIDLet: Estrutura de
um programa MIDLet com Herança da classe MIDLet.
� Ciclo de Vida de um programa MIDLet: Estados de
CONTEÚDO:
� Ciclo de Vida de um programa MIDLet: Estados de um programa MIDLet.
� Exemplos de programas MIDLet.� Interação e Tratamento de Eventos.� Conclusão e Ref. Bibliográfica.
Désiré NGuessan
DEFINIÇÃO DE UM MIDLet
• Uma aplicação J2ME que suporta o perfil MIDP• Uma subclasse da classe MIDlet
– public class Meu MIDlet extends MIDlet {
}
DEFINIÇÃO DE UM MIDLet:
Désiré NGuessan
}
• É o equivalente de uma applet, onde o início e ofim são controlados pelo ambiente de execução
• É análogo Servlet (web services)
• Requer um AMS (Application Management
Software)
• O dispositivo deve oferecer o MAS• Responsável pelo download, instalação e
gerenciamento do ciclo de vida das MIDlets
DEFINIÇÃO DE UM MIDLet:
Désiré NGuessan
gerenciamento do ciclo de vida das MIDlets
• MIDlet Suite é o arquivo de distribuiçãocomposto de 2 arquivos básicos: JAD & JAR
• JAD (Java Application Descriptor)
• Descreve a MIDlet suite.
DEFINIÇÃO DE UM MIDLet:
Désiré NGuessan
• Descreve a MIDlet suite.
• Inclui o nome; fabricante;• localização e tamanho do arquivo JAR;• Requisitos de configuração e perfis; e atributos
definidos pelo desenvolvedor e/ou pelo MIDP
• JAR (Java Archive) empacota um ou mais
MIDLets para ser distribuídos:
• Contém as MIDlets descritas no JAD e demaisrecursos usados pelas aplicações
DEFINIÇÃO DE UM MIDLet:
Désiré NGuessan
• outras classes, imagens, sons e arquivos
• Instalação• Via conexão com PC (Nokia PC Suite)• Cabo USB, Bluetooth, Infra Red
• Download de um servidor remoto - OTA (Over-the-
DEFINIÇÃO DE UM MIDLet:
Désiré NGuessan
• Download de um servidor remoto - OTA (Over-the-
air)
ARQUITETURA DE UM PROGRAMA MIDLet
MIDLet Public class MIDlet{
...
}
ARQUITETURA DE UM PROGRAMA MIDLet:
Meu_MIDLetPublic class Meu_MIDlet extends MIDlet
{
...
}
• Quando um MIDlet é disparado o ambientechama o método MIDlet.startApp()
• O ciclo de vida de um MIDlet é:• startApp()
CICLO DE VIDA DE UM MIDLet
Désiré NGuessan
• startApp()
• pauseApp()
• destroyApp()
Construtor()
Estado AtivoEstado Pause
startApp()
pauseApp()
Início
CICLO DE VIDA DE UM MIDLet:
destroyApp()destroyApp()Est. Destruído
Fim
public class MeuMidlet extends MIDLet{
public MeuMidlet(){
// construtor
}
public void startApp(){
// inicia aqui o lançamento do MeuMidlet após o
CICLO DE VIDA DE UM MIDLet
Désiré NGuessan
// inicia aqui o lançamento do MeuMidlet após o
//construtor
}
public void pauseApp(){
// a aplicação fica em modo pause
}
public void destroytApp(boolean unconditional){
// Quando se deixa a plicação se possível há uma
// destruição
}}
/**Objetivo: Mostrar os estados do ciclo de vida do MIDlet,
por padrão MIDlet fica em Estado de pausa. Quando o aplicativo é
executado, o método startApp() é chamado e quando fechar a
aplicação destroyApp () é chamado. Mas quando o Construtor não é
nulo , então ele será executado em primeiro lugar.
**/ import javax.microedition.lcdui.*;
EXEMPLO DE UM PROGRAMA UM MIDLet:
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
public class MidletLifecycle extends MIDlet{
private Form form;
private Display display;
public MidletLifecycle(){
System.out.println(“Construtor do MidletLifecycle");
}
construtorconstrutor
public void startApp(){
form = new Form(“Ciclo de vida Midlet ");
display = Display.getDisplay(this);
String msg = “Isso é o ciclo de vida do Midlet!";
form.append(msg);
display.setCurrent(form);
estado inicioestado inicio
EXEMPLO DE UM PROGRAMA UM MIDLet:
Désiré NGuessan
display.setCurrent(form);
}
public void pauseApp(){
System.out.println(“ Estado pause...");
}
public void destroyApp(boolean destroy){
System.out.println(“ Estado destruído...");
notifyDestroyed();
}
}
Estado Destruído
Estado PauseEstado Pause
• Uma forma de tratar os eventos do usuário éutilizar a classe Command
• Por exemplo, reconhecer que um botão de ajuda
Interação e Tratamento de Eventos:
Désiré NGuessan
• Por exemplo, reconhecer que um botão de ajudafoi pressionado e em resposta exibir umamensagem.
• Um objeto da classe Command é um botão MIDPque o usuário pode acionar a partir do teclado
• Construtor para criar um objeto da classeCommand
– public Command(String label, int type,
Interação e Tratamento de Eventos:
Désiré NGuessan
– public Command(String label, int type,
int priority);
– Onde:
• Label: etiqueta do botão de comando
• Type: constante da classe Command.
• Constantes dos tipos de comandos– OK : sugere o lançamento de um tratamento– BACK : voltar a tela anterior
: cancelar um tratamento
Interação e Tratamento de Eventos:
Désiré NGuessan
– CANCEL : cancelar um tratamento– STOP : parar um tratamento– EXIT : aborta a execução do MIDlet– HELP : ajuda
• A disposição do comando na tela depende dotipo e da prioridade
• Para processar eventos são necessários:– Criar um objeto Command
– Adicionar o objeto Command em um objeto Form,
Interação e Tratamento de Eventos:
Désiré NGuessan
– Adicionar o objeto Command em um objeto Form,
TextBox, List ou Canvas.
– Adicionar o receptor no objeto Form, TextBox,
List ou Canvas.
• O gerenciador de aplicativos envia umamensagem ao MIDlet
• O gerenciador de aplicativos envia umamensagem ao MIDlet
• As Interfaces receptoras dessa mensagem são:
Interação e Tratamento de Eventos:
Désiré NGuessan
• As Interfaces receptoras dessa mensagem são:– CommandListener: para uma ação de um comando– ItemStateListener: para a mudança de estado de itens de
formulário como por exemplo caixa de texto, caixa de seleção,etc.
– ItemCommandListener
• Para que haja tratamento de eventos o aplicativoMIDLet deve implementar as classes abstratas:– CommandListener
Interação e Tratamento de Eventos:
Désiré NGuessan
– CommandListener
– ItemStateListener
– ItemCommandListener
/* exemplo de ciclo de vida de um MIDLet usando tratamento
de eventos
*/
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class CicloVidaMidlet extends MIDlet implements
CommandListener{
EXEMPLO DE UM MIDLet:
CommandListener{
private Form form;
private Display display;
private Command ok, cancel, exit;//definição de comandos
public CicloVidaMidlet(){
form = new Form("Command Form");
cancel = new Command("CANCEL", Command.CANCEL, 3);
ok = new Command("OK", Command.OK, 4);
exit = new Command("EXIT", Command.EXIT, 7);
} Désiré NGuessan
public void startApp(){
System.out.println(" Estado iniciado... ");
display = Display.getDisplay(this);
form.addCommand(ok);
form.addCommand(exit);
form.addCommand(cancel);
form.setCommandListener(this);
display.setCurrent(form);
}
EXEMPLO DE UM MIDLet:
}
public void pauseApp(){
System.out.println("Estado pause...");
}
public void destroyApp(boolean destroy){
System.out.println("Estado destruido...");
notifyDestroyed();
}
Désiré NGuessan
// tratamento dos comandos ou eventos
public void commandAction(Command c, Displayable d) {
String label = c.getLabel();
if(label.equals("CANCEL"))
this.pauseApp();
else if(label.equals("OK"))
this.startApp();
else
EXEMPLO DE UM MIDLet:
else
this.destroyApp(true);
}
}
Désiré NGuessan
Recomendo revisar o paradigma deorientação à objeto principalmente aHerança, métodos e classes abstratas.
CONCLUSÃO:
Désiré NGuessan
Li Sing and Knudsen Jonathan, Beginnig J2ME platafom
From Novice to Professional, 3 th . Edition, Apess, USA,2010.
DOUDOUX J. Michel, Développons em Java, v.1.30, 2000
Ref. Bibliográfica:
DOUDOUX J. Michel, Développons em Java, v.1.30, 2000
Site da Sun (atual Oracle) & NetBeans
Désiré NGuessan