Arquitetura de Um Programa MIDlet

27
DESENVOLVIMENTO DE DESENVOLVIMENTO DE APLICATIVOS APLICATIVOS DE TELEFONIA MÓVEL NA DE TELEFONIA MÓVEL NA PLATAFORMA J2ME PLATAFORMA J2ME

Transcript of Arquitetura de Um Programa MIDlet

Page 1: 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

Page 2: Arquitetura de Um Programa MIDlet

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].

Page 3: Arquitetura de Um Programa MIDlet

� 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

Page 4: Arquitetura de Um Programa MIDlet

DEFINIÇÃO DE UM MIDLet

[email protected]

Page 5: Arquitetura de Um Programa 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)

Page 6: Arquitetura de Um Programa MIDlet

• 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

Page 7: Arquitetura de Um Programa MIDlet

• 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

Page 8: Arquitetura de Um Programa MIDlet

• 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

Page 9: Arquitetura de Um Programa MIDlet

• 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)

Page 10: Arquitetura de Um Programa MIDlet

ARQUITETURA DE UM PROGRAMA MIDLet

[email protected]

Page 11: Arquitetura de Um Programa MIDlet

MIDLet Public class MIDlet{

...

}

ARQUITETURA DE UM PROGRAMA MIDLet:

Meu_MIDLetPublic class Meu_MIDlet extends MIDlet

{

...

}

Page 12: Arquitetura de Um Programa 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()

Page 13: Arquitetura de Um Programa MIDlet

Construtor()

Estado AtivoEstado Pause

startApp()

pauseApp()

Início

CICLO DE VIDA DE UM MIDLet:

destroyApp()destroyApp()Est. Destruído

Fim

Page 14: Arquitetura de Um Programa MIDlet

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

}}

Page 15: Arquitetura de Um Programa MIDlet

/**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

Page 16: Arquitetura de Um Programa MIDlet

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

Page 17: Arquitetura de Um Programa MIDlet

• 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

Page 18: Arquitetura de Um Programa MIDlet

• 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.

Page 19: Arquitetura de Um Programa MIDlet

• 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

Page 20: Arquitetura de Um Programa MIDlet

• 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

Page 21: Arquitetura de Um Programa 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

Page 22: Arquitetura de Um Programa MIDlet

• 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

Page 23: Arquitetura de Um Programa MIDlet

/* 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

Page 24: Arquitetura de Um Programa MIDlet

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

Page 25: Arquitetura de Um Programa MIDlet

// 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

Page 26: Arquitetura de Um Programa MIDlet

Recomendo revisar o paradigma deorientação à objeto principalmente aHerança, métodos e classes abstratas.

CONCLUSÃO:

Désiré NGuessan

Page 27: Arquitetura de Um Programa MIDlet

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