1/13
Programação para Celular com Java
Objetivo:
• Capacitar o aluno a desenvolver aplicações com o Sun Java
Wireless Toolkit for CLDC.
Sumário
1. Introdução: .......................................................................................................... 2
2. Como criar um novo Projeto?.............................................................................. 2
3. Ciclo Simples de Desenvolvimento ..................................................................... 3
3.1- A edição do código fonte. ............................................................................. 3
3.2- Código do Exemplo ...................................................................................... 3
3.3- Aonde salvar o arquivo digitado? ................................................................. 4
3.4- Análise do código ......................................................................................... 4
4. Build .................................................................................................................... 4
4.1- Resultado da Execução................................................................................ 5
Observação...................................................................................................... 5
5. A Biblioteca [Link].*. ................................................................ 6
5.1 As classes [Link] e
[Link] .......................................................... 7
6. A classe [Link] ....................................................... 7
6.1 O construtor ................................................................................................... 7
6.2 Exemplo ..................................................................................................... 7
6.3 Exercício. ....................................................................................................... 8
7. A Classe [Link].............................................................. 9
Tipos de Tela: ...................................................................................................... 9
7.1 Tela Form................................................................................................... 9
7.2 Tela TextBox ............................................................................................ 10
Exemplo/Exercício: ............................................................................................ 11
Referência Bibliográfica: ....................................................................................... 13
Prof. Vida
vida@[Link]
2/13
MIDlet suites são organizadas em projetos. O resultado de um
1. Introdução: projeto é um Midlet Suite.
Um projeto contém todos os arquivos necessários para a
construção de um MIDlet suite.
1. Na interface do WTK2.5.2, clique no botão New Project.
2. Como criar
um novo
Projeto?
2. Na Janela que é apresentada informe o nome do projeto e o nome
da classe, conforme ilustrado pela figura a seguir.
3. Uma janela de Settings for Projects é apresentada. Sem modificar
nada, clique no botão OK dessa janela.
Mensagens serão apresentadas no console informando o local de
armazenamento dos códigos, conforme ilustra a figura a seguir.
Prof. Vida
vida@[Link]
3/13
O ciclo de desenvolvimento de uma aplicação é formado por:
3. Ciclo
Simples de 1. Edit: Editar e salvar o código fonte.
Desenvolvime 2. Build: Compilação e pré-verificação do código Java.
nto 3. Run: Execução das classes compiladas em um emulador.
3.1- A edição do Crie no seu editor de códigos a seguir:
código fonte.
3.2- Código do
//////////////// arquivo MeuPrimeiroMidlet_Midlet.java
Exemplo
import [Link].*;
import [Link];
public class MeuPrimeiroMidlet_Midlet
extends MIDlet implements CommandListener
{
private Form janela;
private Display display;
public void startApp()
{ display = [Link](this);
janela = new Form("MeuMidlet");
[Link]("Ola Mundo!");
Command exitCommand = new Command("Exit"
, [Link], 0);
[Link](exitCommand);
[Link](this);
[Link](janela);
}
public void pauseApp () {}
public void destroyApp(boolean unconditional){}
public void commandAction(Command c, Displayable s)
{ if ([Link]() == [Link])
notifyDestroyed();
}
}
/* Observação Importante: O código Java exemplificado não deverá
ser compilado através da interface de edição. A compilação do
código será realizada no WTK2.5.2. */
Prof. Vida
vida@[Link]
4/13
3.3- Aonde salvar o Esse arquivo deve ser salvo no diretório
arquivo digitado? workdir\apps\MeuPrimeiroMidlet\src\ .
Se foi utilizado a instalação padrão, o diretório a ser instalado será
o ilustrado na figura a seguir.
3.4- Análise do A API microedition é um conjunto de pacotes exclusivos. Esse
código conjunto é formado pelos seguintes pacotes:
• [Link].* : define as aplicações
e a interação entre a aplicação e o ambiente de execução.
• [Link].* : Fornece classes para
implementação de interface gráfica.
• [Link].* : Fornece
classes para o desenvolvimento de jogos.
• [Link].* : Fornece classes para
implementar o armazenamento de dados no dispositivo.
• [Link].* : Permite autenticar a
comunicação segura.
O Midlet está inicialmente no estado carregado. Quando a
aplicação é iniciada pelo método startApp(), o Midlet muda o seu
estado para ativo. O método pauseApp() dá uma pausa na
execução e o destroyApp() termina a sua execução. A definição
desses três métodos é obrigatoria.
O próximo passo é chamar o compilador através do botão Build
4. Build do WTK2.5.2.
Ao clicar no botão Build da interface do WTK2.5.2, o resultado da
Prof. Vida
vida@[Link]
5/13
compilação é apresentada no console, conforme ilustra a figura a
seguir.
4.1- Resultado da
Execução
Observação A interface gráfica para este tipo de dispositivo é bastante
limitada quando comparada com uma aplicação Desktop.
Tipicamente, a tela possui 95x125 ou 128x128 pixels. Só é possível
utilizar poucos elementos visuais simples.
Prof. Vida
vida@[Link]
6/13
Programação para Celular com Java –
Interface Gráfica
Objetivo:
Capacitar o aluno a
• Criar múltiplos formulários
• Desenvolver elementos navegadores
• Inserir alguns componentes gráficos em uma aplicação
• Adicionar interatividade na aplicação.
5. A Biblioteca [Link].*.
Essa biblioteca é responsável por disponibilizar os seguintes componentes:
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
• [Link]
Prof. Vida
vida@[Link]
7/13
5.1 As classes [Link] e [Link]
Uma instância dessa classe representa a tela de exibição. Pode-se utilizar apenas um
único objeto Display. O Display representao o hardware enquanto que a Displayable é uma
informação que pode ser apresentada no Display.
6. A classe [Link]
Essa classe permite adicionar funcionalidade aos objetos exibidos. Os comandos
podem ser dos tipos listados na Tabela a seguir.
BACK Retorna à tela anterior
CANCEL Cancela uma operação
EXIT Encerra a aplicação
HELP Chama por ajuda
ITEM Utilizado junto com o elemento do tipo choice para
determinar um item da tela
OK Resposta positiva.
STOP Interrompe um processo de execução
SCREEN expecifica que um comando está associado à tela.
6.1 O construtor
Uma instância de Command deve ser inicializada através da definição de um nome, tipo
e prioridade. Por exemplo,
Command sair = new Command("Exit",[Link], 0);
Command ok = new Command("OK",[Link], 1);
Command back = new Command("Back",[Link], 1);
6.2 Exemplo
No Midlet desenvolvido anteriormente, modifique o código inserindo novas opções de
comando, conforme ilustra a figura a seguir.
O resultado da modificação é ilustrado na figura a seguir.
Prof. Vida
vida@[Link]
8/13
6.3 Exercício.
No Midlet desenvolvido até o presente momento, altere o código conforme ilustrado a
seguir. Qual a ordem dos elementos a serem apresentado no Menu?
////////////////////////////// arquivo MeuPrimeiroMidlet_Midlet.java
import [Link].*;
import [Link];
public class MeuPrimeiroMidlet_Midlet
extends MIDlet
implements CommandListener {
private Form janela;
private Display display;
public void startApp() {
display = [Link](this);
janela = new Form("MeuMidlet");
[Link]("Ola Mundo!");
Command exitCommand = new Command("Exit", [Link], 1);
Command ok = new Command("OK",[Link], 0);
Command back = new Command("Back",[Link], 2);
Command parar = new Command("Parar",[Link],3 );
Command cancelar = new Command("Cancelar",[Link],4 );
Command valorPi = new Command("Valor de Pi", [Link],5);
[Link](exitCommand);
[Link](ok);
[Link](back);
Prof. Vida
vida@[Link]
9/13
[Link](parar);
[Link](cancelar);
[Link](valorPi);
[Link](this);
[Link](janela);
}
public void pauseApp () {}
public void destroyApp(boolean unconditional) {}
public void commandAction(Command c, Displayable s) {
if ([Link]() == "Exit")
notifyDestroyed();
else [Link]("\n"+[Link]());
if ([Link]() == "Valor de Pi")
[Link]("="+ [Link]);
}
}
7. A Classe [Link]
A classe Screen permite a inserção de objetos gráficos.
Tipos de Tela:
A classe Screen admite quatro tipos de tela, a saber:
• Form
• Alert
• List
• TextBox
7.1 Tela Form
Form é uma tela que pode conter diversos tipos de elementos gráficos, tais como
imagens, campos de edição e textos. O exemplo estudado até o presente momento utilizou
apenas a Tela Form.
Construtor O construtor do Form deve ser chamado com a
seguinte estrutura:
• Form(String title) : Cria um formulário vazio.
• Form(String title, Item[] items) : Cria um
formulário com alguns itens.
Prof. Vida
vida@[Link]
10/13
Exemplo de construtor:
Form janela = new Form("MeuMidlet");
Outro exemplo de Construtor:
Item[] lista = new Item[3];
lista[0] = new StringItem(
"Opção 1","",[Link]);
lista[1]= new StringItem(
"Opção 2",””,[Link]);
lista[2]= new StringItem(
"Opção 3","",[Link]);
janela = new Form("MeuMidlet",lista);
CommandListener Um form pode conter comandos de ações. Exemplo de definição de
CommandListener:
[Link](this);
Métodos int append(Item i) Adiciona um item ao formulário
void deleteAll( ) Deleta todos os itens do formulário
int getHeight( ) Obtém a largura da tela
int getWidth ( ) Obtém o comprimento da tela
void insert(int p, Item i) Insere um item noformulário
7.2 Tela TextBox
A classe TextBox é um tipo de tela.
Construtor O construtor pode ser definido conforme o exemplo a seguir:
TextBox entrada1 = new TextBox(String title
, String text
, int maxSize
, int constraints)
Os parâmetros necessários ao construtor podem ser definidos como
sendo:
• title – O título do display
• text – O conteúdo inicial a ser apresentado.
• maxSize – a capacidade máxima em caracteres.
• constraints – ANY, EMAILADDR, NUMERIC, PHONENUMBER, URL
DECIMAL e PASSWORD, UNEDITABLE ,SENSITIVE
,NON_PREDICTIVE ,INITIAL_CAPS_WORD
,INITIAL_CAPS_SENTENCE
Métodos void delete(int i, int f) Deleta caracteres do TextBox
Relacionados String getString( ) Retorna o seu conteúdo
void insert(String s, int p) Insere a string s na posição p
Prof. Vida
vida@[Link]
11/13
void setMaxSize(int n) Define o tamanho máximo que o
TextBox pode conter
void setTitle(String s) Dá um título ao TextBox
int size() Retorna a quantidade de
caracteres do TextBox.
Exemplo/Exercício:
Modifique o exemplo anterior, adicionando os novos conceitos apresentados, conforme o
código abaixo. O que a aplicação faz?
////////////////////////////// arquivo MeuPrimeiroMidlet_Midlet.java
import [Link].*;
import [Link];
public class MeuPrimeiroMidlet_Midlet
extends MIDlet
implements CommandListener {
private Form janela;
private final int tamanho = 3;
private TextBox[] entrada = new TextBox[tamanho];
private Item[] lista = new Item[tamanho];
private StringItem[] campos = new StringItem[tamanho];
private Display display;
public void startApp() {
display = [Link](this);
campos[0] = new StringItem("Nome","",[Link]);
campos[1] = new StringItem("Idade","",[Link]);
campos[2] = new StringItem("Senha","",[Link]);
for (int i = 0; i < tamanho; i++)
lista[i] = campos[i];
janela = new Form("MeuMidlet",lista);
[Link]("\nOla Mundo!");
entrada[0]= new TextBox("Nome",null, 20
, TextField.INITIAL_CAPS_WORD);
entrada[1] = new TextBox("Idade", null, 2, [Link]);
Prof. Vida
vida@[Link]
12/13
entrada[2] = new TextBox("Senha", null, 8
, [Link]);
Command exitCommand = new Command("Exit", [Link], 1);
Command nome = new Command("Nome",[Link], 0);
Command idade = new Command("Idade",[Link], 0);
Command senha = new Command("Senha",[Link], 0);
Command back = new Command("Back",[Link], 2);
Command parar = new Command("Parar",[Link],3 );
Command cancelar = new Command("Cancelar",[Link],4 );
Command valorPi = new Command("Valor de Pi",[Link],5);
for (int i = 0; i < tamanho; i++) entrada[i].addCommand(back);
[Link](exitCommand);
[Link](nome);
[Link](idade);
[Link](senha);
[Link](back);
[Link](parar);
[Link](cancelar);
[Link](valorPi);
[Link](this);
for (int i = 0; i < tamanho; i++)
entrada[i].setCommandListener(this);
[Link](janela);
}
public void pauseApp () {}
public void destroyApp(boolean unconditional) {}
public void commandAction(Command c, Displayable s) {
if ([Link]() == "Back")
{ for (int i = 0; i < tamanho; i++)
campos[i].setText(entrada[i].getString());
[Link](janela);
}
if (s==janela)
{ if ([Link]() == "Exit")
Prof. Vida
vida@[Link]
13/13
notifyDestroyed();
else if ([Link]() == "Nome")
[Link](entrada[0]);
else if ([Link]() == "Idade")
[Link](entrada[1]);
else if ([Link]() == "Senha")
[Link](entrada[2]);
else [Link]("\n"+[Link]());
if ([Link]() == "Valor de Pi")
[Link]("="+ [Link]);
}
}
}
Referência Bibliográfica:
Título:Java para Dispositivos Móveis : desenvolvendo aplicações com J2ME
Ano: 2007
Autor: Thienne M. Johnson
Editora: Novatec Editora
ISBN: 978-85-7522-143-3
Prof. Vida
vida@[Link]