Upload
livia-maldonado
View
223
Download
3
Embed Size (px)
Citation preview
Seminários .replyJavaME
César Delmas – [email protected] Hially Sá – [email protected]
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