Arquitetura de Um Programa MIDlet
Transcript of Arquitetura de Um Programa MIDlet
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