Seminários.reply JavaME César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br

Preview:

Citation preview

Seminários .replyJavaME

César Delmas – cadcn@cin.ufpe.br Hially Sá – hrs@cin.ufpe.br

Agenda

Arquitetura (Revisão)MIDlet (Revisão)Hierarquia de classesScreenEventos

Arquitetura - Configurações

Parte “low level” Define requisitos de hardware Especificação para JVM Geralmente divide os dispositivos segundo

memória, poder de processamento, display, conectividade

Exemplos: CLDC (Connected Limited Device Configuration) CDC (Connected Devide Configuration)

Arquitetura - Profiles

Parte “high level”Extensão da configuraçãoProvê bibliotecas para implementação de

aplicações para um dado tipo de dispositivo

Exemplo: MIDP (Mobile Information Device Profile)

Arquitetura – Pacotes Opcionaisacho q a gente pode melhorar esse slide

Pacotes opcionais CLDC ou CDC Específicos Modulares Exemplos

Conexão com BD, Envio de mensagens, Webservices, Bluetooth, Multimídia, kSOAP, kXML, Mail4ME...

Arquitetura - Esquemático

MIDlet - Conceitos

Midlets são aplicações móveis em Java

Classe abstrata a ser implementada

MIDlet - Estruturaimport javax.microedition.midlet.MIDlet;

public class helloWorld extends MIDlet {

public helloWorld () { System.out.println("helloWorld()");}

protected void startApp() {System.out.println("startApp()");}

protected void pauseApp() {System.out.println("pauseApp()");}

protected void destroyApp(boolean arg0) {System.out.println("destroyApp()");}

}

MIDlet – Ciclo de Vida

MIDP – Hierarquia de classes

Display

Gerenciador de tela que controla o que é mostrado no dispositivo e quando

Recupera informações sobre a tela atual (cores suportadas, resolução, etc)

Objeto único para cada MIDletNão é instanciado

Usando o Displaypublic class DisplayStats extends MIDlet {private Display display;

// construtorpublic DisplayStats() {display = Display.getDisplay(this);...}...}

Display – métodos principais

static Display getDisplay(MIDlet m) Retorna o objeto display deste MIDlet

Displayable getCurrent() Retorna o objeto displayable corrente

void setCurrent(Displayable d) Mostra um objeto displayable ()

Display – métodos principais

int numColors() Retorna o número de cores disponíveis

boolean vibrate(int duration) Ordena ou não a vibração do aparelho(midp

2.0) boolean flashBackLight(int duration)

Ordena ou não que a luz do aparelho acenda(midp 2.0)

Displayable

Objeto que pode ser visto num dispositivoScreen

Objetos Displayable para Interface alto nível

CanvasObjetos Displayable para Interface baixo

nível

Displayable

Screen TextBox List Alert Form (ChoiceGroup, DateField, TextField,

Gauge, ImageItem, StringItem) OBS: ticker – variável que pode estar ou não

num Displayable;

TextBox - Conceitos

Caixa de texto que permite filtragem para certos tipos de caracteres

Semelhante a TextFieldNão herda de Item, ao contrário de

TextField

TextBox - Métodos

Métodos principais: TextBox (String title, String text, int maxSize,

int constraints) void delete(int offset, int length) void insert(String src, int position) int getChars(char[] data) void setConstraints(int constraints) int size()

TextBox - Exemplopublic class classeJavaME extends MIDlet{

private Display display;private TextBox tb;

// Construtorpublic classeJavaME() {display = Display.getDisplay(this);tb = new TextBox("",“Exemplo - TextBox",11,0);} // seta o display protected void startApp() {this.display.setCurrent(tb);}

}

TextBox - Protótipos

List - Conceitos

Implementa a interface Choice Screen utilizados para mostrar uma lista de

opções Tipos:

ECLUSIVE MULTIPLE IMPLICIT (Não tem em ChoiceGroup)

List - Métodos

Métodos principais List(String title, int listType) int append(String stringPart, Image

imagePart) void delete(int elementNum) int getSelectedIndex() boolean isSelected(int elementNum) int size()

List - Exemplopublic class classeJavaME extends MIDlet{

private Display display;private List list;

// Construtorpublic classeJavaME() {display = Display.getDisplay(this);list = new List(“Exemplo - Lista",“List.IMPLICIT",11,0);this.list.append("carro",null);this.list.append("navio",null);this.list.append("aviao",null);} // seta o display protected void startApp() {this.display.setCurrent(list);}

}

List - Protótipo

Alert

Caixa de diálogo simples que possui uma imagem e um texto, ambos opcionais

Objetos Command (“botões”) não podem ser adicionados ao objeto Alert

A interatividade com o Alert fica a cargo do fabricante do dispositivo

Tipos Modal Timed

Alert - ContinuaçãoPode ser usado diretamente por Display ou

usado em conjunto com um DisplayableMétodos principais:

Alert(String title, String alertText, Image alertImage, AlertType at)

String getString() void setString(String str) int getTimeout() void setTimeout(int time)

Alert

AlertType

Classe especialmente útilEncapsula informações sobre o Alert

e possibilita o suporte a somDuas maneiras de se utilizar som

O objeto Alert possuindo um AlertType Usando um método estático de

AlertType chamando playSound

AlertType

Tipos ALARM: usado para uma notificação CONFIRMATION: confirmação de um evento

ou ação ERROR: indica que um erro foi encontrado INFO: indica em geral uma informação não-

critíca ao usuário WARNING: indica problemas potenciais

Alert - Exemplopublic class classeJavaME extends MIDlet{

private Display display;private Alert alert;private Form form = new Form(“Formulário”);

// Construtorpublic classeJavaME() { display = Display.getDisplay(this); alert = new Alert("Alerta","Perigo!!!", null, AlertType.WARNING); alert.setTimeout(3000);} // seta o display protected void startApp() {

this.display.setCurrent(alert, form);}

…}

Ticker

Representa um texto que rola na telaÉ atributo de Screen Possui somente três métodos principais

Ticker (String texto) getString () setString (String texto)

Ticker - Exemplopublic class classeJavaME extends MIDlet{

private Display display;private Form form = new Form(“Formulário”);private Ticker testTicker;

// Construtorpublic classeJavaME() { display = Display.getDisplay(this); ticker = new Ticker("Teste Ticker"); form.setTicker(testTicker);} // seta o display protected void startApp() {this.display.setCurrent(form);}

…}

Ticker - Protótipo

Form

Item ChoiceGroup, DateField, TextField, Gauge, ImageItem, StringItem

Choice e ChoiceGroup

Choice: Interface que define os métodos para se manipular vários tipos de seleções predefinidas

ChoiceGroup Implementa Choice Pode ser usado como CheckBox ou

RadioButton Tipos: EXCLUSIVE e MULTIPLE

ChoiceGroup - Métodos

Métodos principais: ChoiceGroup(String label, int choiceType) int append(String stringPart, Image

imagePart) void insert(int elementNum, String

stringElement, Image imageElement) getSelectedIndex() boolean isSelected(int elementNum)

ChoiceGroup - Exemplopublic class classeJavaME extends MIDlet{

private Display display = Display.getDisplay(this);private Form form = new Form(“Formulário”);private ChoiceGroup choice = new ChoiceGroup("Choice",Choice.EXCLUSIVE);

// Construtorpublic classeJavaME() { choice.append("choice 1", null); choice.append("choice 2", null); choice.append("choice 3", null); form.append(choice);} // seta o display protected void startApp() {this.display.setCurrent(form);}…

}

ChoiceGroup - Protótipo

DateField

Objeto Item que manipula de forma simples tipos Date (java.util)

Métodos principais: DateField (String label, int modo) Date getDate () void setDate(Date data)

Datefield - Exemplopublic class classeJavaME extends MIDlet{

private Display display = Display.getDisplay(this);private Form form = new Form(“Formulário”);

// Construtorpublic classeJavaME() {

DateField df = new DateField("Data: ", DateField.DATE); Date dataAtual = new Date(); df.setDate(dataAtual); form.append(df);} // seta o display protected void startApp() {

this.display.setCurrent(form);}

…}

DateField - Protótipo

TextFieldCaixa de texto para formuláriosSuporta múltiplas linhasOpção de filtrar a entrada de dados

CONSTRAINT_MASK ANY EMAILADDR NUMERIC PASSWORD PHONENUMBER URL

TextField - Métodos

Métodos principais TextField (String label, String text, int max, int

constraints) void delete(int offset, int length) int getChars(char[] data) void insert(String src, int position) String getString() int getConstraints() * int size()

* Usado com CONSTRAINT_MASK

TextField - Exemplopublic class classeJavaME extends MIDlet{

private Display display = Display.getDisplay(this);private Form form = new Form(“Formulário”);

// Construtorpublic classeJavaME() {TextField tf = new TextField("Texto", "Oi", 30, TextField.ANY); form.append(tf);} // seta o display protected void startApp() {this.display.setCurrent(form);}

…}

TextField - Protótipo

Gauge

São basicamente indicadores de progresso de uma ação

Existem dois modos de atualizaçãoInterativoNão-interativo

ExemplosControle de volumeProgresso de download

Gauge – Métodos

Métodos Principais Gauge(String label, boolean interactive, int maxValue,

int initialValue) – Construtor int getValue() – Obtém o valor atual do medidor void setValue(int value) – Configura o novo valor do

medidor void setMaxValue(int maxValue) – Configura o novo

valor máximo Boolean isInteractive() – Verifica se é interativo

Gauge - Exemplopublic class classeJavaME extends MIDlet{

private Display display = Display.getDisplay(this);private Form form = new Form(“Formulário”);

// Construtorpublic classeJavaME() {

Gauge gauge = new Gauge(“Gauge", true, 50, 11); form.append(gauge);} // seta o display protected void startApp() {

this.display.setCurrent(form);}

…}

Gauge - Protótipo

Image - Conceito

Representa uma imagem a ser exibida no display do dispositivo

TiposImutável: pode ser usada diretamente

no Form, nas opções de um Choice ou em um Alert.

Mutável: mais flexível. Simplesmente um espaço de memória reservado em que poderá ser pintada a imagem.

ImageItem - Conceitos

Possibilita a exibição de uma imagem em um objeto Form.

A exibição depende da implementação do fabricante do dispositivo.

ImageItem - Métodos

Métodos principais ImageItem(String label, Image img, int layout,

String altText) ImageItem(String label, Image img, int layout,

String altText) void setImage(Image img) void setLayout(int layout)

ImageItem – Exemplopublic class classeJavaME extends MIDlet{

private Display display = Display.getDisplay(this);private Form form = new Form(“Formulário”);

// Construtorpublic classeJavaME() {

try {Image image = Image.createImage("/java.png");ImageItem item = new ImageItem(null, image, ImageItem.LAYOUT_CENTER, null);form.append(item); } catch (IOException e) {e.printStackTrace(); } } // seta o display protected void startApp() {this.display.setCurrent(form);}…}

ImageItem - Protótipo

StringItem

Rótulo estático e mensagem de textoNão é editávelNão reconhece eventosMétodos principais:

StringItem(String label, String text) String getText() – Obtém o valor atual do texto Void setText(String text) – Configura o novo

valor do texto String getLabel() – Obtém o valor do rótulo

StringItem - Exemplopublic class classeJavaME extends MIDlet{

private Display display = Display.getDisplay(this);private Form form = new Form(“Formulário”);

// Construtorpublic classeJavaME() {

StringItem si = new StringItem("String :", "texto"); form.append(si);} // seta o display protected void startApp() {

this.display.setCurrent(form);}

…}

Alternativa ao StringItem...private Form fmMain;int i = fmMain.append(“Login: cesps”);...StringItem tmp = (StringItem) fmMain.get(i);...

Quadro geral - eventos

Eventos são essenciais para MIDlets, pois são chave para interatividade

Para gerenciarmos um evento: Hardware reconhece o evento físico software é notificado do evento evento é tratado pelo programador

Objetos Command

Contém informações sobre um evento Podem ser considerados como “botões”

Soft keys Teclas

O processo de eventos1. Criação do Objeto Command2. Adicionar o comando a um displayable3. Adicionar um receptor (listener) ao displayable

Objetos CommandCommand cmdExit = new Command(“exit”, Command.EXIT, 1)

Argumentos Nome para o comando Constante (OK, EXIT, HELP, BACK, etc) Prioridade

Constante Mapeia o posicionamento dos comandos na tela Depende da implementação do fabricante

Prioridade Útil para a organização dos comandos em Menus e de botões de

software na tela

CommandListener

É o “receptor” de um comandoMétodo a ser sobrescrito:

commandAction (Command c, Displayable d ) Em commandAction é definido como o aplicativo

deve se comportar quando um evento é disparado

Command - Exemploprivate Form fmMain; private Command cmExit;fmMain = new Form(“Formulário"); ...cmExit = new Command("Exit", Command.EXIT, 1); // 1º passo...fmMain.addCommand(cmExit); //2º passofmMain.setCommandListener(this); // 3º passo...public void commandAction(Command c, Displayable s) {

if (c == cmExit) {destroyApp(true);notifyDestroyed();}

}

Exercitando ...

Crie um MIDlet que contenha um Form e controle três botões: Form fmMain = new Form(“Tela Principal”); Lembre-se que Form é um objeto Displayable

“exit”, usado para sair do MIDlet“hello” imprime “Hello World”“back” volta para a tela principal, após o

usuário ter visualizado a mensagem

Recommended