1. Computação Móvel
Veio para resolver um grande problema desta
“Era da Informação”
(ou excesso de Informação, segundo alguns)
Necessidade de acesso à informação
(qualquer lugar e a qualquer momento)
–Aumentar a eficiência do trabalho
–Facilidade no transporte de dispositivos
–Cada vez mais dispositivos
–Cada vez mais recursos
–Custos caindo...
2. Computação Móvel
Redes:
Wi Fi Internet
Wi Max
Bluetooth
Serviços
Dispositivos Telefonia Operadoras
Portáteis ou Celular
Embarcados
3. Computação Móvel
Principais problemas
Conectividade
–Perda de conexão
–Qualidade variável do enlace – sem QoS
–Regiões sem Cobertura
–Largura de Banda estreita
Dispositivos
–Possuem poucos recursos
–Energia limitada
–Interface pobre
–Grandes diferenças entre eles
4. Por que Java?
●O JavaME (MicroEdition) é um retorno do Java
as origens, comunicação de pequenos
dispositivos heterogêneos.
●Foi criada pois o Java cresceu muito
●Diferentes Dispositivos:
–Multiplataforma => Máquina Virtual
●Quantidade de desenvolvedores
●Suporte dos maiores fabricantes:
–Nokia, Siemens, Motorola, Sony/Ericson, LG...
5. JavaME – as 2 Divisões
Padrão de arquitetura Arquitetura CDC Arquitetura CLDC
Programa JavaME Programa JavaME Programa JavaME
Perfil FP / PBP / PP MIDP
Configuração CDC CLDC
Máquina Virtual JVM-CDC KVM
Hardware Bons Recursos Muito Simples
Palm, Embarcados, SetupBox Celulares, Palm
6. JavaME - siglas
Configurações
●CLDC: Conected Limited Device Configuration
–Poucos recursos e conexão fraca -> Celulares
● CDC: Conected Device Configuration
–Bons recursos computacionais e de conexão
Perfis
●MIDP: Mobile Information Device Profile
–Perfil usado para desenvolvimento para celulares
●FP: Foundation Profile – sem GUI
●PBP: Personal Basis Profile – gráficos limitados
●PP: Personal Profile – quase Java padrão
–Este 3 perfis são utilizados com o CDC
8. MIDlet Suite
●Pacote que segue os padrões de MIDP
●“.jar” da aplicação para celular, inclui:
–Inclui o arquivo “MANIFEST.MF”
–Inclui recursos (imagens, sons)
–Inclui uma ou mais MIDlets (aplicações MIDP)
●Acompanha arquivo “.jad“ (java descriptor),
normalmente usado para baixar, instalar e
configurar o .jar.
Ex: Jogo.jar – aplicativo - 45kb
Jogo.jad – descritor - 150bytes
9. MIDP – arquivo MANIFEST.MF
●Arquivo de propriedades, incluído no “.jar”
●Descreve o conteúdo e configura a Suite
●Campos obrigatórios:
–MIDlet-<n>:info MIDlet n - Nome,Icone,Classe
–MIDlet-Vendor: autor
–MIDlet-Name: nome da Suite MIDlet
–MIDlet-Version: versão do aplicativo
–MicroEdition-Configuration: versão do CLDC
–MicroEdition-Profile: versão do MIDP
●A linha MIDlet-<n> se repete para cada MIDlet
dentro da suite.
10. MIDP – exemplo MANIFEST.MF
Manifest-Version: 1.0
MIDlet-1: Xadrez, torre.png , demo.Xadrez
MIDlet-2: Dama, disco.png , demo.Dama
MIDlet-3: Gamão, gamao.png, demo.Gamao
MIDlet-Vendor: Chicao SA.
MIDlet-Name: Jogos Demo
MIDlet-Description: Exemplo de Jogos JavaME
MIDlet-Version: 1.0.0
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.1
11. MIDP – Descritor “.jad”
●Arquivo externo ao “.jar”, usado na instalação
●Semelhante ao MANIFEST.MF e com
precedência sobre ele
●Tem o mesmo nome do pacote “.jar”
●Outros campos utilizados:
–MIDlet-Jar-Size: tamanho em bytes do “.jar”
–MIDlet-Jar-URL: localização do “.jar”
13. MIDlet – Ciclo de Vida
Construtor
Pausado
pauseApp destroyApp
startApp
Rodando Destruido
destroyApp
14. Criando um MIDlet
● Basta criar uma classe que estenda MIDlet
–javax.microedition.midlet.MIDlet
●
● Implementar os métodos:
–Construtor()
–public void startApp()
–public void pauseApp()
–public void destroyApp(boolean b)
Para executar ou instalar, deve estar empacotada
como MIDlet Suite, com o MANIFEST.MF
15. Interface Gráfica
Características:
Tela pequena – pouca resolução e cores
Interface pobre – sem apontador
Por isso não possui alguns objetos gráficos
comuns, como botões, e deve haver uma
grande preocupação com a navegação e
troca de telas no projeto.
A API javax.microedition.lcdui é a responsável
pelos recursos gráficos do MIDP
16. API javax.microedition.lcdui
Object
Display Displayable Command Item Graphics
Canvas Screen ChoiceGroup DateField Font
CustomItem TextField Image
Alert ImageItem Gauge
Form Ticker
StringItem Spacer
TextBox
List AlertType
17. Classes para Exibição de Telas
Display
Representa a tela do dispositivo
Existe apenas uma para todo o MIDlet
Obtida por: tela = Display.getDisplay(this)
“tela” é um Display e “this” é um MIDlet
Displayable
São as telas configuradas
São alternadas no Display atraves de:
tela.setCurrent(menu)
“tela” é um Display e “menu” é um Displayable
18. Classes “Displayable”
Displayable Canvas - classe para telas de
baixo nível, desenhos e eventos
Canvas Screen Screen - classe para telas de alto
nível, específicas, dos tipos:
Alert: mensagens de aviso
Alert
TextBox: apenas textos
Form List: lista de opções, menus
TextBox Form: permite agrupar itens,
List campos de entrada, seletores,
medidores, imagens e textos
20. Comandos – Classe Command
Problema:
“Não há padronização de botões em celulares!”
Solução:
São atribuídos a tipos: OK, CANCEL, SCREEN, STOP,
BACK, EXIT, HELP e ITEM
O Celular se encarrega de colocar o
comando na posição “padrão do
aparelho” pelo tipo.
Caso haja vários comandos na mesma
posição, mostra um menu com as
várias opções.
21. CommandListener
Interface para tratamento dos eventos de
Command.
Deve ser implementado pela classe que vai tratar
os comandos
Método a ser implementado:
public void commandAction(Command c, Displayable d)
onde: “c” recebe o objeto que gerou o comando
“d” recebe a tela onde foi dado o comando
Este método pode ser o mesmo para tratar
diversos comandos, por isso é hábito testá-los