Intro javame

Post on 28-Nov-2014

1.027 views 2 download

description

Introdução a plataforma Java ME

Transcript of Intro javame

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...

Computação Móvel

ServiçosTelefoniaCelular

Redes:Wi Fi

Wi MaxBluetooth

Internet

OperadorasDispositivos Portáteis ouEmbarcados

Computação Móvel

Principais problemasConectividade–Perda de conexão–Qualidade variável do enlace – sem QoS–Regiões sem Cobertura–Largura de Banda estreitaDispositivos–Possuem poucos recursos–Energia limitada–Interface pobre–Grandes diferenças entre eles

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...

JavaME – as 2 Divisões

Hardware

Máquina Virtual

Configuração

Perfil

Programa JavaME

Bons Recursos

JVM-CDC

CDC

FP / PBP / PP

Programa JavaME

Muito Simples

KVM

CLDC

MIDP

Programa JavaME

Padrão de arquitetura Arquitetura CDC Arquitetura CLDC

Celulares, PalmPalm, Embarcados, SetupBox

JavaME - siglasConfigurações

●CLDC: Conected Limited Device Configuration–Poucos recursos e conexão fraca -> Celulares●CDC: Conected Device Configuration–Bons recursos computacionais e de conexãoPerfis

●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

JavaME – API´s MIDP

CLDCjava.langjava.iojava.utiljava.microedition.io

MIDPjava.microedition.lcduijava.microedition.lcdui.gamejava.microedition.midletjava.microedition.rmsjava.microedition.pkijava.microedition.mediajava.microedition.media.control

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 - 45kbJogo.jad – descritor - 150bytes

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.

MIDP – exemplo MANIFEST.MF

Manifest-Version: 1.0MIDlet-1: Xadrez, torre.png , demo.XadrezMIDlet-2: Dama, disco.png , demo.DamaMIDlet-3: Gamão, gamao.png, demo.GamaoMIDlet-Vendor: Chicao SA.MIDlet-Name: Jogos DemoMIDlet-Description: Exemplo de Jogos JavaMEMIDlet-Version: 1.0.0MicroEdition-Configuration: CLDC-1.1MicroEdition-Profile: MIDP-2.1

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”

MIDP – exemplo JogosDemo.jad

MIDlet-Jar-Size: 15516MIDlet-Jar-URL: JogosDemo.jarMIDlet-Name: Jogos DemoMIDlet-Vendor: Chicao SA.MIDlet-Version: 1.0MicroEdition-Configuration: CLDC-1.1MicroEdition-Profile: MIDP-2.1

MIDlet – Ciclo de Vida

Pausado

Rodando Destruido

startApppauseApp destroyApp

destroyApp

Construtor

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

Interface Gráfica

Características:Tela pequena – pouca resolução e coresInterface 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

API javax.microedition.lcdui

Object

Display Displayable Command Item Graphics

Font

Image

Ticker

AlertType

Canvas Screen

AlertForm

TextBox

List

DateField

TextField

Gauge

Spacer

ChoiceGroup

CustomItem

ImageItem

StringItem

Classes para Exibição de Telas

DisplayRepresenta a tela do dispositivoExiste apenas uma para todo o MIDletObtida por: tela = Display.getDisplay(this)

“tela” é um Display e “this” é um MIDlet

DisplayableSão as telas configuradasSão alternadas no Display atraves de:

tela.setCurrent(menu)“tela” é um Display e “menu” é um Displayable

Classes “Displayable”

Canvas - classe para telas de baixo nível, desenhos e eventos

Screen - classe para telas de alto nível, específicas, dos tipos:Alert: mensagens de avisoTextBox: apenas textosList: lista de opções, menusForm: permite agrupar itens,

campos de entrada, seletores, medidores, imagens e textos

Displayable

Canvas Screen

AlertForm

TextBox

List

Classes “Item”

Componentes gráficos usados em Displayable Form

TextField – entrada textoDateField – entrada dataStringItem – etiqueta “label”ChoiceGroup – seleçãoImageItem – imagem Gauge – medidor Spacer – espaçador CustomItem – crie o seu...

Item

DateField

TextField

Gauge

Spacer

ChoiceGroup

CustomItem

ImageItem

StringItem

Comandos – Classe CommandProblema: “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.

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 comandoEste método pode ser o mesmo para tratar

diversos comandos, por isso é hábito testá-los

Por enquanto é só!