Programa Expresso de Capacitação Módulo J2ME

Programa Expresso de Capacitação Módulo J2ME

Programa Expresso de Capacitao Mdulo J2ME Aula 3 MIDP Pausa para reflexo "Sem esforo no h progresso, mas com esforo tambm no h progresso Ryotan Tokuda, Mestre Zen

Agenda Overview MIDP Tratamento de eventos High-level API de Componentes de interface com o usurio - javax.microeidtion.lcdui.* Overview MIDP Elemento-chave no mundo J2ME Junto com CLDC Conectividade

Interface grfica rica Relembrando... Mobile Information Device Profile MIDP applications = MIDlets = CLDC + MIDP MIDlets Componentes do MIDlet JAD usado pelo JAM. Possui informaes a respeito do JAR. JAR Cdigo compilado, junto com recursos.

Java Application Manager: Software responsvel por instalar, remover e executar MIDlets Dependente de dispositivo e de fabricante Mais de um MIDlet pode estar em um JAR. Estrutura de um MIDlet import javax.microedition.midlet.MIDlet; public class helloWorld extends MIDlet {

public helloWorld () { System.out.println("helloWorld()"); } // obrigatorio protected void startApp() { System.out.println("startApp()"); } // obrigatorio protected void pauseApp() { System.out.println("pauseApp()"); }

// obrigatorio protected void destroyApp(boolean arg0) { System.out.println("destroyApp()"); } } Ciclo de vida de um MIDlet

PAUSA Depois da chamada do construtor e antes da inicializao pelo JAM Durante o processo de execuo ATIVO MIDlet em execuo Durante o processo de execuo DESTRUDO

Desligada pelo JAM Libera todos os recursos alocados Hierarquia de classes Display Gerenciador de tela que controla o que mostrado no dispositivo Recupera informaes sobre a tela atual (cores suportadas, resoluo, etc)

Objeto nico para cada MIDlet No instanciado Usando Display import javax.microedition.lcdui.Display; import javax.microedition.midlet.MIDlet; public class DisplayStats extends MIDlet { private Display display; // construtor public DisplayStats() { display = Display.getDisplay(this);

... } ... } Display mtodos 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 int numColors() Retorna o nmero de cores disponveis Displayable Objeto que pode ser visto num dispositivo Screen Objetos Displayable para Interface

alto nvel Canvas Objetos Displayable para Interface baixo nvel Voltando ao Diagrama ... Enfim um Hello World import javax.microedition.lcdui.Display; import javax.microedition.lcdui.TextBox;

import javax.microedition.midlet.MIDlet; public class HelloMIDlet extends MIDlet { private Display myDisplay; private TextBox myTextBox; public HelloMIDlet() { myDisplay = Display.getDisplay(this); myTextBox = new TextBox("", "Hello World", 11, TextField.ANY); } public void startApp() { this.myDisplay.setCurrent(myTextBox); }

public void pauseApp() {} public void destroyApp(boolean unconditional) {} } Pausa para reflexo "Sem esforo no h progresso, mas com esforo tambm no h progresso Ryotan Tokuda, Mestre Zen Tratamento de eventos

Interface de alto nvel Overview Quadro geral Objetos Command

Objetos Item Command e CommandListener Item e ItemStateListener Quadro geral Eventos so essenciais para MIDlets, pois so chave para interatividade Para gerenciarmos um evento: O Hardware reconhece o evento fsico O software notificado do evento O evento tratado pelo programador

Objetos Command Contm informaes sobre um evento Podem ser considerados como botes

Soft keys Teclas O processo de eventos 1. Criao do Objeto Command 2. Adicionar o comando a um Displayable 3. Adicionar um receptor (Listener) ao Displayable Objetos Command Command 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 implementao do fabricante

Prioridade til para a organizao dos comandos em Menus e de botes de software na tela CommandListener o receptor de um comando Mtodo a ser sobrescrito: commandAction (Command c, Displayable d ) Em commandAction definido como o aplicativo deve se comportar quando um evento disparado

Exemplo (faltam uns ajustes) Mo na massa: Classe Form um Displayable private Form fmMain; private Command cmExit; fmMain = new Form(Curso CITi"); ...

cmExit = new Command("Exit", Command.EXIT, 1); // 1 passo ... fmMain.addCommand(cmExit); //2 passo fmMain.setCommandListener(this); // 3 passo ... public void commandAction(Command c, Displayable s) { if (c == cmExit) { destroyApp(true); notifyDestroyed(); } }

Exerccio Crie um MIDlet que contenha um Form e controle trs botes: 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, aps o usurio ter visualizado a mensagem

Item Qualquer componente que possa ser adicionado a um objeto Form (ver diagrama de classes) Item uma classe abstrata Mtodos String getLabel () Void setLabel (String label) ItemStateListener

O receptor de eventos relacionados a objetos Item Mtodo a ser sobrescrito void itemStateChanged () No mesmo modelo dos objetos Command Este mtodo chamado quando o item tiver sofrido alterao que gere evento Exemplo // cria o objeto Item

df = new DateField("Data :", DateField.DATE); df.setDate(new java.util.Date()); // adiciona o objeto a um displayable formMain.append(df); // seta o receptor formMain.setItemStateListener(this); Exerccio Crie um MIDlet com um DateField e que

imprime Item State Changed ... quando seu estado alterado Para esta implementao pode ser usado System.out.println() Interface grfica de alto nvel Overview

Screen Form Item StringItem DateField Gauge TextField Choice e ChoiceGroup Image e ImageItem List TextBox

Alert e AlertType Ticker Screen Classe progenitora Descendente direta de Displayable Mtodos principais:

String getTitle () void setTitle(String title) Ticker getTicker () void setTicker (Ticker t) Form Container que armazena vrios componentes que podem ser exibidos na tela Mtodos principais:

int append (Item item) int append (String texto) void delete(int itemNum) Item get (int itemNum) int size ()

Form - Exemplo Form fm = new Form(Formulario); ... fm.append(item) // adiciona um item ... size = fm.size() // retorna o tamanho ... // seta o receptor para um evento com Item fm.setItemStateListener (ItemStateListener)

Item Componente que pode ser adicionado a um objeto Form Subclasses ChoiceGroup, DateField , Gauge, ImageItem, StringItem, TextField ItemStateListener Interface a ser implementada para gerenciar eventos relacionados a Item

Item - Exemplo private Form fmMain; // formulario private DateField dfToday; // o objeto DateField ... fmMain = new Form(My Form"); // instancia de Form dfToday = new DateField("Today:", DateField.DATE); // DateField ... fmMain.append(dfToday); // adiciona Item (DateField) ao Form fmMain.setItemStateListener(this); // Gerencia os eventos de Form ... public void itemStateChanged(Item item) {

if (item == dfToday) ... } StringItem Rtulo esttico e mensagem de texto

No editvel No reconhece eventos Mtodos principais: StringItem(String label, String text) String getText() Obtm o valor atual do texto Void setText(String text) Configura o novo valor do texto

String getLabel() Obtm o valor do rtulo StringItem - Exemplo private Form fmMain; // formulario Private StringItem siLogin; // o objeto StringItem ... fmMain = new Form(PEC"); // instancia de Form siLogin = newStringItem(Login: ", ela); // StringItem ... fmMain.append(siLogin); // adiciona Item (StringItem) ao Form ...

Alternativa ao StringItem ... private Form fmMain; int i = fmMain.append(Login: ela); ... StringItem tmp = (StringItem) fmMain.get(i); ... Exerccio Construa um MIDlet simples que possui dois botes

(next e exit). Na primeira tela exibido um StringItem com o label Dados 1/2 e o texto Nome: Jos Next: passa para uma outra tela, onde o label Dados 2/2 e texto Fone: 555-5555 Exit: sai da aplicao em qualquer das duas telas Exercitando ... Insira um texto (label) em um Form usando as duas maneiras aprendidas, em seguida recupere ambos na forma de StringItem e para cada um imprima no console o label e o texto.

O que voc conclui? DateField Objeto Item que manipula de forma simples tipos Date (java.util) Mtodos principais: DateField (String label, int modo) Date getDate () void setDate(Date data) DateField - Exemplo

// criao do objeto DateField DateField df = new DateField(Data:, DateField.DATE); ... java.util.Date dataAtual = new java.util.Date (); df.setDate(dataAtual); // seta a data do DateField df.getDate (); // recupera a data atual DateField

Gauge So basicamente indicadores de progresso de uma ao Existem dois modos de atualizao Interativo No-interativo Exemplos Controle de volume Progresso de download

Gauge Continuao Mtodos Principais Gauge(String label, boolean interactive, int maxValue, int initialValue) - Construtor int getValue() Obtm o valor atual do medidor void setValue(int value) Configura o novo valor do medidor Void setMaxValue(int maxValue) Configura o novo valor mximo Gauge - Exemplo

// Gauge interativo Gauge gInt = new Gauge(Volume, true, 20,2) Gauge nInt = new Gauge(Volume,false, 20,2) ... // Seta um valor qualquer gInt.setValue(10) nInt.setVaule(20) // Retorna o valor atual

gInt.getValue() nInt.getValue() Gauge TextField Caixa de texto para formulrios Suporta mltiplas linhas Opo de filtrar a entrada de dados

CONSTRAINT_MASK ANY EMAILADDR NUMERIC PASSWORD

PHONENUMBER URL TextField - Continuao Mtodos 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 - Exemplo // cria um novo TextField com mscara para nmero de telefone tfPhone = new TextField("Phone:", "", 10, TextField.PHONENUMBER // recupera o texto tf.getChars(arrayDestino); // seta um String tf.setString(Curso J2ME);

); TextField Choice e ChoiceGroup Choice: Interface que define os mtodos para se manipular vrios tipos de selees predefinidas ChoiceGroup

Implementa Choice Pode ser usado como CheckBox ou RadioButton ChoiceGroup - Continuao Tipos EXCLUSIVE MULTIPLE Mtodos 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 Image Representa uma imagem a ser exibida no display do dispositivo Tipos

Imutvel: pode ser usada diretamente no Form, nas opes de um Choice ou em um Alert. Mutvel: mais flexvel. Simplesmente um espao de memria reservado em que poder ser pintada a imagem ImageItem Possibilita a exibio de uma imagem em um objeto Form A exibio depende da implementao do fabricante do dispositivo

Mtodos 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 Exemplo ... try { Image img = Image.createImage(/citi.png); Image img2 = Image.createImage(/bird.png); } catch (IOException ioe) { ... } ... ImageItem imCiti = new ImageItem(null, img, ImageItem.LAYOUT_DEFAULT); ... fmMain.append(imCiti); ...

fmMain.append(Img2); List Semelhante a ChoiceGroup, entretanto no gera eventos de Item Possui mais um tipo que IMPLICIT, no implementado por ChoiceGroup No herda de Item, ao contrrio de ChoiceGroup List - Continuao

Mtodos 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 - Exemplo www/~ela/PEC/ListDemo.java List TextBox Caixa de texto que permite filtragem para

certos tipos de caracteres Semelhante a TextField No herda de Item, ao contrrio de TextField TextBox Mtodos 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 - Exemplo textBox tb; ... // instncia de TextBox tb = new TextBox(TextBox,,20,TextField.ANY); ... // seta o display

display.setCurrent(tb); // recupera o texto tb.getChars(arrayDestino); TextBox Exercitando ... Escreva um MIDlet que copia um texto de um

TextBox para outro. O texto dever ser selecionado pela posio do cursor Possui os seguintes comandos: EXIT: termina a aplicao COPY: copia o texto para outro TextBox BACK: volta para o TextBox da tela inicial Alert Caixa de dilogo simples que possui uma imagem e um texto, ambos opcionais Objetos Command (botes) no podem ser

adicionados ao objeto Alert A interatividade com o Alert fica a cargo do fabricante do dispositivo Tipos Modal Timed Alert - Continuao Pode ser usado diretamente por Display ou usado em conjunto com um Displayable Mtodos 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 til

Encapsula informaes sobre o Alert e possibilita o suporte a som Duas maneiras de se utilizar som O objeto Alert possuindo um AlertType Usando um mtodo esttico de AlertType chamando playSound AlertType Tipos ALARM: usado para uma notificao CONFIRMATION: confirmao de um evento ou

ao ERROR: indica que um erro foi encontrado INFO: indica em geral uma informao no-critca ao usurio WARNING: indica problemas potenciais Alert - Exemplo Form fmMain; Alert alerta; ... // instancia os objetos

fmMain = new Form(Tela principal); alerta = new Alert(INFO, CURSO J2ME, null, AlertType.INFO); ... // seta o alerta para ficar visvel display.setCurrent(alerta, fmMain); Exerccio Acrescente ao exerccio de TextField um Alert ao abrir a aplicao antes da tela inicial e um

Alert caso o par login e senha no seja igual a adm e 123 respectivamente. Ticker Representa um texto que rola na tela atributo de Screen Possui somente trs mtodos principais Ticker (String texto) getString () setString (String texto)

Ticker - Exemplo // o Ticker e o objeto Screen Form fmMain; Ticker testTicker; ... // instncia do Ticker testTicker = new Ticker(Teste Ticker); // seta o Ticker do Form

fmMain.setTicker(testTicker); Referncias Wireless Programming with J2ME: Cracking the code, ISBN: 0-7645-4885-9 Tutoriais da Sun

Recently Viewed Presentations

  • xad - Home | NNIP

    xad - Home | NNIP

    * One of the great things about working in food is that there is a lot of opportunity for comedy. As I was putting together the first presentation I did on our sustainability study I found a web site from...
  • Study Skills - Holy Family School

    Study Skills - Holy Family School

    Week 1 & 2 of Effective Study Skills. In your journal, just a few pages after pg. 68 and before the Homework section starts, there is a section on "Study - Recommended Practice".
  • Self-Insured Workers' Compensation - Houston

    Self-Insured Workers' Compensation - Houston

    Self-Insured Workers' CompensationThird Party Administration & Related ServicesPRE-PROPOSAL CONFERENCE: December 11, 2014 Civil Service Conference Room, 611 Walker, 4th Floor Annex, Houston, TX
  • Solar Energy Overview - Broward County, Florida

    Solar Energy Overview - Broward County, Florida

    Roof Attachment Methods ie post-tension concrete deck. Insurance company standards not established. Permitting challanges. End of utility rebate program. ... 1,000 MWh production since 2011 inception. Suggestions. Demonstrate cost effectiveness. Verify vendor experience. Provide progress updates ...
  • Fossils - Academic Computer Center

    Fossils - Academic Computer Center

    Fossils What is a fossil? A fossil is an impression, cast, original material or track of any animal or plant that is preserved in rock after the original organic material is transformed or removed.
  • Tips and Tools for Responding to Government Solicitations

    Tips and Tools for Responding to Government Solicitations

    The objective is to develop an FDM approach to 3D printing that will work with existing printers but produce higher quality results. They are not looking for metal, but rather a better plastic or a better plastic process. Better =...
  • Diapositive 1 - msss.gouv.qc.ca

    Diapositive 1 - msss.gouv.qc.ca

    Michel Lesmerises. préciser ses difficultés au niveau de l'anxiété et de l'humeur dépressive. tr de l'anxiété généralisée, tr de l'humeur non-spécifié, alcoolisme et toxicomanie en rémission, phobie spécifique de type situationnelle (prendre l'avion) aucun diagnostic
  • Using ratios to convert FDP - Denton ISD

    Using ratios to convert FDP - Denton ISD

    Well now we can use that knowledge to convert between ratios, percent, and decimals! Ratio to a Percent. Part-to-Whole Ratios can be expressed in the form of a percentage. ... Caution- In some cases we needed to simplify the ratio...