• Nenhum resultado encontrado

Felipe Guimarães

N/A
N/A
Protected

Academic year: 2021

Share "Felipe Guimarães"

Copied!
123
0
0

Texto

(1)

Programação Mobile

Programação Mobile

Luiz Felipe S. L. Guimarães Luiz Felipe S. L. Guimarães [email protected] [email protected]

(2)

Tópicos Abordados

Tópicos Abordados



 Desafios do mundo mobileDesafios do mundo mobile 

 Tecnologias móveis, vantagens e desvantagensTecnologias móveis, vantagens e desvantagens 

 Introdução ao Java MEIntrodução ao Java ME 

 Ambiente de desenvolvimentoAmbiente de desenvolvimento 

 Ambiente de desenvolvimentoAmbiente de desenvolvimento 

 O que é uma JSR ?O que é uma JSR ? 

(3)

Tópicos Abordados

Tópicos Abordados



 Perfis e ConfiguraçõesPerfis e Configurações



 CLDC, CDCCLDC, CDC 

 MIDPMIDP



 Graphical User InterfaceGraphical User Interface 

 Graphical User InterfaceGraphical User Interface



 Alto nível (Screen)Alto nível (Screen) 

 Baixo nível (Canvas)Baixo nível (Canvas)

  PersistênciaPersistência   RecordStoreRecordStore File Connection File Connection

(4)

Tópicos Abordados

Tópicos Abordados



 Generic Connection FrameworkGeneric Connection Framework 

 Tratamento de EventosTratamento de Eventos 

 Ofuscador de códigoOfuscador de código

Deployment da aplicação Deployment da aplicação



(5)

Tópicos Abordados

Tópicos Abordados



 Otimização da aplicaçãoOtimização da aplicação



 PreprocessamentoPreprocessamento 

 Shifting Shifting 

 Resource packing Resource packing 

 Resource packing Resource packing 

 Ofuscador de códigoOfuscador de código 

 Otimização de imagensOtimização de imagens 

(6)

Tópicos Abordados

Tópicos Abordados



 Overview das APIs opcionaisOverview das APIs opcionais



 File & PIM (JSR75)File & PIM (JSR75)   Bluetooth (JSR82)Bluetooth (JSR82)   LWUITLWUIT   LWUITLWUIT   Futuro Futuro   MIDP 3.0MIDP 3.0

(7)

Java ME

Java ME



 Java ME: uma plataforma Java desenvolvida pela Java ME: uma plataforma Java desenvolvida pela

Sun Microsystems e para utilização em Sun Microsystems e para utilização em microdispositivos.

microdispositivos.



 Java ME = Java Micro Edition, não Java Mobile Java ME = Java Micro Edition, não Java Mobile

Edition! Edition!



(8)

Ambientes

Ambientes de

de Desenvolvimento

Desenvolvimento

  EclipseEclipse   NetBeansNetBeans   JbuilderJbuilder Etc… Etc…   Etc…Etc…

(9)

Ambientes

Ambientes de

de Desenvolvimento

Desenvolvimento



 Wireless Toolkit Wireless Toolkit

(http://java.sun.com/products/sjwtoolkit/) (http://java.sun.com/products/sjwtoolkit/)



 Eclipse: Eclipse:



 Mobile Tools for Java (Mobile Tools for Java (PluginMobile Tools for Java (Mobile Tools for Java (PluginPlugin) Plugin) ) )

(http://www.eclipse.org/dsdp/mtj/) (http://www.eclipse.org/dsdp/mtj/)



 NetBeansNetBeans



(10)

Desafios

Desafios



 DispositivosDispositivos



 ConsumoConsumo de de energiaenergia 

 TamanhoTamanho do visordo visor 

 CapacidadeCapacidade de de processamentoprocessamento



 UsuárioUsuário



 UsabilidadeUsabilidade ((dispositivodispositivo móvelmóvel != != computadorcomputador))   IntuitividadeIntuitividade   FlexibilidadeFlexibilidade   SimplicidadeSimplicidade

(11)

Desafios

Desafios



 ArquiteturaArquitetura dada AplicaçãoAplicação



 PersistênciaPersistência ((memóriamemória suficientesuficiente?)?) 

 SincronizaçãoSincronização 

 SistemasSistemas distribuídosdistribuídos 

 HeterogeneidadeHeterogeneidade de de ambientesambientes 

 RedeRede



 CriptografiaCriptografia 

 LarguraLargura de Bandade Banda   AvaliabilidadeAvaliabilidade   LatênciaLatência   CompactaçãoCompactação

(12)

Arquitetura

Arquitetura



 Java ME é Java ME é divididodividido emem configuraçãoconfiguração, , perfisperfis e APIs e APIs

opcionais opcionais..



 ConfiguraçãoConfiguração: : parapara um um segmentosegmento específicoespecífico de de

dispositivos dispositivos dispositivos dispositivos



 EspecificaEspecifica umauma máquinamáquina virtual Javavirtual Java 

 SubconjuntoSubconjunto do Java SEdo Java SE 

(13)

Arquitetura

Arquitetura



 PerfilPerfil: : maismais específicoespecífico queque a a configuraçãoconfiguração



 BaseadoBaseado emem umauma configuraçãoconfiguração 

 AdicionaAdiciona APIs APIs parapara interface interface gráficagráfica, , persistênciapersistência de dados, de dados,

etc. etc.

APIs

APIs opcionaisopcionais: : adicionaadiciona funcionalidadesfuncionalidades



 APIs APIs opcionaisopcionais: : adicionaadiciona funcionalidadesfuncionalidades



 Bluetooth, Bluetooth, LocalizaçãoLocalização (GPS), (GPS), MultimídiaMultimídia, 3D, , 3D, EnvioEnvio de de

mensagens

mensagens, etc., etc. 

(14)

Configuração

Configuração



 CDCCDC: Connected Device Configuration: Connected Device Configuration



 DispositivosDispositivos com com maiormaior poderpoder de de processamentoprocessamento 

 SetSet--Top Boxes Top Boxes dada TV Digital, Pocket PCs, PDAs, TV Digital, Pocket PCs, PDAs, sistemassistemas de de

navegação

navegação automotivosautomotivos, etc., etc.

CLDC

CLDC: Connected : Connected LimitedLimited Device ConfigurationDevice Configuration



 CLDCCLDC: Connected : Connected LimitedLimited Device ConfigurationDevice Configuration



 DispositivosDispositivos com com poderpoder computacionalcomputacional maismais limitadoslimitados.. 

(15)

CLDC

CLDC –

– Requisitos

Requisitos Mínimos

Mínimos



 MemóriaMemória parapara a a plataformaplataforma Java com 160kb a Java com 160kb a

512kb 512kb



 JVM = KVM (Kilobyte Virtual Machine)JVM = KVM (Kilobyte Virtual Machine) 

 ProcessadoresProcessadores de 16 a 32 bitsde 16 a 32 bits 

 ProcessadoresProcessadores de 16 a 32 bitsde 16 a 32 bits 

 BaixoBaixo consumoconsumo de de energiaenergia 

 LarguraLargura de de bandabanda de de rederede limitadalimitada 

(16)

CLDC

CLDC -- Limitações

Limitações

Não

Não possuipossui as as característicascaracterísticas abaixoabaixo::



 SemSem pontoponto flutuanteflutuante (float e double) (CLDC 1.0)(float e double) (CLDC 1.0) 

 SemSem finalizaçãofinalização do Object (CLDC 1.0)do Object (CLDC 1.0) 

 ReflectionReflection 

 ReflectionReflection 

 ClassLoadersClassLoaders customizadoscustomizados 

 GruposGrupos de Threadde Thread 

(17)

Contextualização

Contextualização

(18)

Contextualização

Contextualização

  Java ME = CLDC + CDCJava ME = CLDC + CDC   Java ME = CLDC + CDCJava ME = CLDC + CDC   CDC CDC contémcontém CLDCCLDC 

 Java EE Java EE contémcontém Java SEJava SE 

 Java EE Java EE nãonão contémcontém totalmentetotalmente Java MEJava ME



 VáriasVárias classes e classes e métodosmétodos sãosão removidosremovidos 

(19)

CLDC

CLDC –

– APIs

APIs



 IncluiInclui pacotespacotes::

  java.iojava.io   java.langjava.lang   java.lang.refjava.lang.ref   java.lang.refjava.lang.ref   java.utiljava.util   javax.microedition.iojavax.microedition.io

(20)

MIDP

MIDP –– Mobile Information Device ProfileMobile Information Device Profile

Atribuições Atribuições::



 CicloCiclo de de vidavida dada aplicaçãoaplicação 

 ConectividadeConectividade atravésatravés do Generic Connection do Generic Connection

Framework Framework Framework Framework



 Graphical User InterfaceGraphical User Interface 

(21)

MIDP

MIDP –– RestriçõesRestrições



 Resolução mínima de 96 x 54 pixels Resolução mínima de 96 x 54 pixels 

 128 KB de memória não volátil128 KB de memória não volátil 

 32 KB de memória volátil (executar a aplicação 32 KB de memória volátil (executar a aplicação

Java) Java) Java) Java)



 Pelo menos 8 KB para armazenar dados Pelo menos 8 KB para armazenar dados

persistentes da aplicação Java persistentes da aplicação Java



(22)

MIDP

MIDP –– RestriçõesRestrições

Sistema operacional (S.O) do celular deve: Sistema operacional (S.O) do celular deve:



 Possuir escalonamento e interrupção de Possuir escalonamento e interrupção de

processos processos



 Suporte a escrita de gráficos bitmap na telaSuporte a escrita de gráficos bitmap na tela 

 Suporte a escrita de gráficos bitmap na telaSuporte a escrita de gráficos bitmap na tela 

 Aceitar a entrada de dados e redirecionáAceitar a entrada de dados e redirecioná--la para la para

a KVM a KVM

(23)

MIDP

MIDP –– APISAPIS

MIDP 2.0 javax.microedition.lcdui javax.microedition.lcdui.game javax.microedition.media javax.microedition.media.control javax.microedition.midlet javax.microedition.pki javax.microedition.pki javax.microedition.rms CLDC 1.1 java.lang java.lang.ref java.io java.util java.microedition.io

(24)

Contextualização

Contextualização

(25)

Contextualização

Contextualização

(26)

Arquitetura

Arquitetura

(27)

Arquitetura

Arquitetura

(28)

Arquitetura

Arquitetura

(29)

CICLO

CICLO DE

DE VIDA

VIDA

MIDlets MIDlets

(30)

MIDlets MIDlets



 AplicaçõesAplicações MIDP MIDP sãosão chamadaschamadas MIDletsMIDlets 

 Cada MIDlet é uma instância de Cada MIDlet é uma instância de

javax.microedition.midlet.MIDlet javax.microedition.midlet.MIDlet



 Construtor sem argumentosConstrutor sem argumentos 

 Construtor sem argumentosConstrutor sem argumentos 

 ImplementaImplementa osos métodosmétodos de de ciclociclo de de vidavida dada

aplicação aplicação

(31)

MIDlets

(32)

MIDlets

MIDlets –– CicloCiclo de Vida de Vida



 Application Management System (AMS) Application Management System (AMS)

controla

controla o download, o download, instalaçãoinstalação, , execuçãoexecução e e remoção

remoção de de MIDletsMIDlets..



 InícioInício daInícioInício dada aplicaçãoda aplicaçãoaplicação: : construtoraplicação: : construtorconstrutor + construtor + + startApp+ startAppstartAppstartApp

(AMS) (AMS)



 MIDletMIDlet



 Se Se colocacoloca emem estadoestado pausadopausado atravésatravés do do métodométodo

notifyPaused notifyPaused().().



 Se autoSe auto--destróidestrói atravésatravés do do métodométodo

notifyDestroyed notifyDestroyed().().

(33)

MIDlets

MIDlets –– CicloCiclo de Vida de Vida



 Application Management System (AMS) Application Management System (AMS) podepode

chamar

chamar o o pauseApppauseApp() e () e destroyAppdestroyApp().().



(34)

MIDlets

MIDlets –– CicloCiclo de Vida de Vida -- EstadosEstados



 PAUSEDPAUSED



 ApósApós a a chamadachamada do do construtorconstrutor e antes e antes dada

inicialização

inicialização pelopelo AMS.AMS.



 Na Na execuçãoexecução dada aplicaçãoaplicação.. 

 Na Na execuçãoexecução dada aplicaçãoaplicação..



 ACTIVEACTIVE



 MIDletMIDlet emem execuçãoexecução, , apósapós deixardeixar estadoestado de paused.de paused.



 DESTROYEDDESTROYED



(35)

MIDlets MIDlets import javax.microedition.midlet.MIDlet;

public class HelloWorld extends MIDlet {

public HelloWorld() {

System.out.println("HelloWorld()");

}

protected void destroyApp(boolean arg0) { System.out.println("destroyApp()");

System.out.println("destroyApp()");

}

protected void pauseApp() {

System.out.println("pauseApp()");

}

protected void startApp() {

System.out.println("startApp()");

} }

(36)

MIDlets MIDlets



 “Write Once, Run Anywhere”?“Write Once, Run Anywhere”?



 DiferentesDiferentes tamanhostamanhos de de visoresvisores 

 ResoluçãoResolução dada telatela 

 ColoridoColorido ouou pretopreto e e brancobranco?? 

 ColoridoColorido ouou pretopreto e e brancobranco?? 

 DiferentesDiferentes capacidadescapacidades de de entradaentrada



 Soft keysSoft keys 

 Touch ScreenTouch Screen 

 TecladosTeclados 

(37)

GRAPHICAL USER INTERFACE

GRAPHICAL USER INTERFACE

MIDlets MIDlets

(38)

MIDlets

(39)

MIDlets

(40)

Display Display



 RepresentaRepresenta o o gerenciadorgerenciador do display e de do display e de

dispositivos

dispositivos de de entradaentrada..



 PossuiPossui métodosmétodos parapara obterobter propriedadespropriedades do do

dispositivo

dispositivo e e parapara exibirexibir objetosobjetos no display.no display. dispositivo

dispositivo e e parapara exibirexibir objetosobjetos no display.no display.



 ExisteExiste apenasapenas umauma instânciainstância de Display de Display porpor

MIDlet MIDlet..



 PodePode ser ser obtidoobtido atravésatravés do do métodométodo

Display.getDisplay Display.getDisplay().().

(41)

Display

Display –– AlgunsAlguns MétodosMétodos



 flashBackLightflashBackLight((intint duracaoduracao) )  requisitarequisita um um

efeito

efeito de flashing no visor do de flashing no visor do dispositivodispositivo



 isColorisColor() ()  retornaretorna se o display é se o display é coloridocolorido 

 numColorsnumColors() ()  retornaretorna o o númeronúmero de coresde cores 

 numColorsnumColors() ()  retornaretorna o o númeronúmero de coresde cores 

 vibrate(vibrate(intint duracaoduracao) )  vibravibra o o dispositivodispositivo 

 setCurrentsetCurrent(Displayable d) (Displayable d)  modificamodifica a a telatela

atual atual



(42)

Displayable Displayable



 ElementoElemento queque podepode ser ser exibidoexibido no Display.no Display. 

 PodePode conterconter::

  Um Um títulotítulo   Um “ticker”Um “ticker”   Um “ticker”Um “ticker” 

 Zero Zero ouou maismais comandoscomandos parapara interaçãointeração com o com o

usuário

usuário atravésatravés de um listener (de um listener (CommandListenerCommandListener).).



 No MIDP No MIDP podempodem ser:ser:



 ScreenScreen 

(43)

Displayable Displayable



 ModificarModificar o o conteúdoconteúdo do display: do display: passandopassando

objetos

objetos Displayable Displayable aoao Display.setCurrentDisplay.setCurrent(). ().



 SequênciaSequência normalnormal



 ExibeExibe um Displayable no displayum Displayable no display 

 ExibeExibe um Displayable no displayum Displayable no display 

 AguardaAguarda porpor entradaentrada do do usuáriousuário 

 EscolheEscolhe a a próximapróxima telatela a a exibirexibir 

(44)

Displayable

Displayable  Screen Screen



 ClasseClasse abstrataabstrata parapara UI de UI de alto alto nívelnível.. 

 SeuSeu conteúdoconteúdo e e interaçãointeração devemdevem ser ser definidosdefinidos

pelas

pelas subclassessubclasses



 ExistemExistem quatroquatro subclasses subclasses definidasdefinidas:: 

 ExistemExistem quatroquatro subclasses subclasses definidasdefinidas::

  AlertAlert   FormForm   ListList   TextBoxTextBox

(45)

Displayable

Displayable  Screen Screen  TextBoxTextBox



 É o Screen É o Screen queque permitepermite aoao usuáriousuário entrarentrar e e

editar

editar textotexto..



 PossuiPossui um um títulotítulo, , textotexto, , tamanhotamanho máximomáximo e e

restrições restrições.. restrições restrições..



 RestriçõesRestrições ((atravésatravés dada classeclasse TextFieldTextField):):



 ANY ANY –– QualquerQualquer caracterecaractere 

 EMAILADDR EMAILADDR –– EndereçoEndereço de emailde email 

 NUMERIC NUMERIC –– NúmerosNúmeros inteirosinteiros 

 PHONENUMBER PHONENUMBER –– TelefoneTelefone 

(46)

Displayable

Displayable  Screen Screen  TextBoxTextBox protected void startApp() throws

MIDletStateChangeException {

if (display==null) {

display = Display.getDisplay(this);

}

TextBox textBox = new

TextBox textBox = new

TextBox("Título","Texto",10,TextField.ANY);

display.setCurrent(textBox);

(47)

Displayable

(48)

Displayable

Displayable  Screen  Screen  List List



 Um Screen Um Screen contendocontendo umauma listalista de String e de String e

Images. Images.



 PodePode ser ser criadocriado com com osos tipostipos (Choice): (Choice):



 EXCLUSIVE EXCLUSIVE –– UsuárioUsuário selecionaseleciona apenasapenas um um 

 EXCLUSIVE EXCLUSIVE –– UsuárioUsuário selecionaseleciona apenasapenas um um

elemento elemento..



 IMPLICIT IMPLICIT –– UsuárioUsuário selecionaseleciona apenasapenas um um elementoelemento, ,

que

que notificanotifica um listener.um listener.



 MULTIPLE MULTIPLE –– UsuárioUsuário selecionaseleciona zero, um zero, um ouou maismais

elementos

(49)

Displayable

Displayable  Screen  Screen  List List protected void startApp() throws

MIDletStateChangeException {

if (display==null) {

display = Display.getDisplay(this);

}

List list = new List("Clubes",

ChoiceGroup.IMPLICIT,new

String[]

{"Sport","Náutico","Santa Cruz"},

null);

display.setCurrent(list);

(50)

Displayable

Displayable  Screen Screen  AlertAlert



 Um Screen Um Screen queque exibeexibe dados dados parapara o o usuáriousuário e e

aguarda

aguarda porpor um tempo um tempo ouou eventoevento antes de antes de exibirexibir o

o próximopróximo Displayable.Displayable.



 PodePode conterconter textotexto e e imagemimagem.. 

 PodePode conterconter textotexto e e imagemimagem.. 

 Alert.setTimeoutAlert.setTimeout((intint timeout)timeout)



 Alert.Alert.FOREVERFOREVER  AlertaAlerta modal, modal, aguardaaguarda atéaté o o

usuário

usuário pressionarpressionar algumalgum comandocomando..



 CasoCaso contráriocontrário  AguardaAguarda o tempo o tempo especificadoespecificado

pelo

(51)

Displayable

Displayable  Screen Screen  AlertAlert



 PossuiPossui osos atributosatributos::



 TítuloTítulo, , TextoTexto, , ImagemImagem, , TipoTipo de de alertaalerta ((AlertTypeAlertType))



 AlertTypeAlertType::



 INFO INFO  IndicaIndica a a exibiçãoexibição de de informaçõesinformações 

 INFO INFO  IndicaIndica a a exibiçãoexibição de de informaçõesinformações 

 WARNING WARNING  IndicaIndica queque a a operaçãooperação podepode ser ser

perigosa perigosa



 ERROR ERROR  ErroErro durantedurante a a operaçãooperação 

 ALARM ALARM  AlertaAlerta a a respeitorespeito de de algumalgum eventoevento 

(52)

Displayable

Displayable  Screen Screen  AlertAlert

protected void startApp() throws MIDletStateChangeException {

if (display==null) {

display = Display.getDisplay(this);

}

List list = new List("Clubes",ChoiceGroup.IMPLICIT,new String[] {"Sport","Náutico","Santa Cruz"}, null);

Alert alert = new Alert("Erro","Erro na conexão com o servidor!", null, AlertType.ERROR);

alert.setTimeout(5000);

display.setCurrent(alert, list);

(53)

Displayable

Displayable  Screen Screen  AlertAlert

(54)

Displayable

Displayable  Screen Screen  FormForm



 Screen Screen queque contémcontém váriosvários ítensítens.. 

 ÍtensÍtens sãosão::



 InterativosInterativos 

 ChoiceGroupChoiceGroup ((semelhantesemelhante aoao List)List) 

 DateFieldDateField ((exibeexibe data e/data e/ouou horahora)) 

 Gauge (Gauge (barrabarra de de progressoprogresso) () (interativainterativa)) 

 TextFieldTextField ((semelhantesemelhante aoao TextBoxTextBox)) 

 NãoNão InterativosInterativos 

 ImageItemImageItem ((exibeexibe umauma imagemimagem)) 

 StringItemStringItem ((exibeexibe um label)um label) 

(55)

Displayable

Displayable  Screen Screen  FormForm



 EmEm se se tratandotratando de GUI de alto de GUI de alto nívelnível, , apenasapenas o Form o Form

possibilita

possibilita múltiplosmúltiplos ítensítens nana telatela..



 ConstrutoresConstrutores::



 Form(String Form(String tituloForm(String tituloForm(String titulo) titulo) ) )  cria cria cria um form cria um form um form semum form semsem nenhumsem nenhumnenhum ítemnenhum ítemítemítem 

 Form(String Form(String titulotitulo, Item[] , Item[] itensitens) )  criacria um form com o um form com o títulotítulo

e

e osos ítensítens passadospassados 

 MétodosMétodos principaisprincipais::



 append append  adicionaadiciona um um ítemítem aoao formform 

 delete delete  remove um remove um ítemítem do formdo form 

(56)

Form

Form -- ItemItem



 ClasseClasse abstrataabstrata parapara osos componentescomponentes queque podempodem ser ser

adicionados

adicionados aoao Form.Form.



 TodosTodos osos ítensítens contémcontém um label, um label, queque geralmentegeralmente

exibidos

exibidos pertoperto do do componentecomponente no display.no display. exibidos

exibidos pertoperto do do componentecomponente no display.no display.



 O label O label devedeve ser ser exibidoexibido nana mesmamesma linhalinha queque o o

componente

componente ouou emem cimacima dele.dele.



 Subclasses: Subclasses: ChoiceGroupChoiceGroup, , StringItemStringItem, , TextFieldTextField, ,

Gauge,

(57)

Item

Item  StringItemStringItem



 Um Um ítemítem queque contémcontém umauma StringString 

 NãoNão podepode ser ser editadoeditado (é um Label)(é um Label) 

 TantoTanto o label o label quantoquanto a string a string podempodem ser ser

modificados

modificados pelapela aplicaçãoaplicação modificados

modificados pelapela aplicaçãoaplicação



 O visual do label O visual do label podepode ser ser diferentediferente do visual do do visual do

conteúdo

(58)

Item

Item  StringItemStringItem protected void startApp() throws

MIDletStateChangeException {

if (display==null) {

display = Display.getDisplay(this);

}

Form form = new Form("Futebol");

StringItem string = new

StringItem("","Campeonato Pernambucano de Futebol");

form.append(string);

display.setCurrent(form); }

(59)

Item

Item  ChoiceGroupChoiceGroup



 GrupoGrupo de de elementoselementos queque podempodem ser ser

selecionados

selecionados. . SóSó podempodem ser ser usadosusados DENTRO DENTRO de um Form (

de um Form (aoao contráriocontrário do List).do List).



 PodePode ser ser criadocriado de forma a de forma a possibilitarpossibilitar queque sejaseja 

 PodePode ser ser criadocriado de forma a de forma a possibilitarpossibilitar queque sejaseja

selecionado selecionado: :



 apenasapenas um um elementoelemento ((comocomo radio button)radio button) 

(60)

Item

Item  ChoiceGroupChoiceGroup (EXCLUSIVE)(EXCLUSIVE) protected void startApp() throws

MIDletStateChangeException {

if (display==null) {

display = Display.getDisplay(this);

}

Form form = new Form("Futebol");

ChoiceGroup choice = new

ChoiceGroup("Clubes",ChoiceGroup.EXCLUSIVE

,new String[] {"Sport","Náutico","Santa Cruz"}, null);

form.append(choice);

display.setCurrent(form); }

(61)

Item

Item  ChoiceGroupChoiceGroup (POPUP)(POPUP) protected void startApp() throws

MIDletStateChangeException {

if (display==null) {

display = Display.getDisplay(this);

}

Form form = new Form("Futebol");

ChoiceGroup choice = new

ChoiceGroup("Clubes",ChoiceGroup.POPUP,new

String[] {"Sport","Náutico","Santa Cruz"},

null);

form.append(choice);

display.setCurrent(form); }

(62)

Item

Item  ChoiceGroupChoiceGroup (POPUP)(POPUP) protected void startApp() throws

MIDletStateChangeException {

if (display==null) {

display = Display.getDisplay(this);

}

Form form = new Form("Futebol");

ChoiceGroup choice = new

ChoiceGroup("Clubes",ChoiceGroup.POPUP,new

String[] {"Sport","Náutico","Santa Cruz"},

null);

form.append(choice);

display.setCurrent(form); }

(63)

Item

Item  ChoiceGroup ChoiceGroup (MULTIPLE)(MULTIPLE) protected void startApp() throws

MIDletStateChangeException {

if (display==null) {

display = Display.getDisplay(this);

}

Form form = new Form("Futebol");

ChoiceGroup choice = new

ChoiceGroup("Clubes",ChoiceGroup.MULTIPLE, new String[] {"Sport","Náutico","Santa

Cruz"}, null);

form.append(choice);

display.setCurrent(form); }

(64)

ChoiceGroup

ChoiceGroup != List!= List

protected void startApp() throws

MIDletStateChangeException {

if (display==null) {

display = Display.getDisplay(this);

}

Form form = new Form("Futebol");

ChoiceGroup choice = new

ChoiceGroup choice = new

ChoiceGroup("Clubes",ChoiceGroup.MULTIPLE,new String[] {"Sport","Náutico","Santa Cruz"}, null);

form.append(choice);

StringItem string = new StringItem("","Campeonato Pernambucano de Futebol");

form.append(string);

display.setCurrent(form); }

(65)

Item

Item  TextFieldTextField



 ComponenteComponente editáveleditável queque podepode ser ser adicionadoadicionado

ao

ao Form.Form.



 PodePode conterconter um um textotexto usadousado comocomo valor valor inicialinicial.. 

 IgualIgual aoao TextBoxTextBox? ? 

 IgualIgual aoao TextBoxTextBox? ?



 DifereDifere do do TextBoxTextBox poispois precisaprecisa estarestar dentrodentro de um de um

Form

Form parapara existirexistir..



 PorémPorém é é semelhantesemelhante visualmentevisualmente e e emem caracteríscascaracteríscas

como

(66)

Item

Item  TextFieldTextField protected void startApp() throws

MIDletStateChangeException {

if (display==null) {

display = Display.getDisplay(this);

}

Form form = new Form("Futebol");

TextField textField = new TextField("Clube de Preferência","",50, TextField.ANY);

form.append(textField);

display.setCurrent(form); }

(67)

Item

Item  ImageItemImageItem



 ComponenteComponente queque possuipossui referênciareferência à à umauma

imagem

imagem, , parapara ser ser adicionadoadicionado aoao Form.Form.



 PodePode se se mutávelmutável ouou imutávelimutável 

 PermitePermite queque sejaseja determinadodeterminado o local o local dada imagemimagem:: 

 PermitePermite queque sejaseja determinadodeterminado o local o local dada imagemimagem::



 LAYOUT_CENTER LAYOUT_CENTER -- horizontalmente centralizadahorizontalmente centralizada 

 LAYOUT_DEFAULT LAYOUT_DEFAULT -- default, de default, de acordo com o containeracordo com o container 

 LAYOUT_LEFT LAYOUT_LEFT -- lado esquerdo da telalado esquerdo da tela 

 LAYOUT_NEWLINE_AFTER LAYOUT_NEWLINE_AFTER -- uma nova linha é criada após a imagemuma nova linha é criada após a imagem 

 LAYOUT_NEWLINE_BEFORE LAYOUT_NEWLINE_BEFORE -- uma nova linha é criada antes da imagemuma nova linha é criada antes da imagem 

(68)

Item

Item  ImageItemImageItem

protected void startApp() throws

MIDletStateChangeException {

if (display==null) {

display = Display.getDisplay(this);

}

Form form = new Form("Exibindo Imagem");

Image image = null;

try {

try {

image = Image.createImage("/java.png");

} catch (IOException e) {

e.printStackTrace(); }

ImageItem imageItem = new ImageItem("Java Logo",image,ImageItem.LAYOUT_CENTER,"(Java Logo)");

form.append(imageItem); display.setCurrent(form); }

(69)

Ticker Ticker



 TODOSTODOS osos DisplayablesDisplayables têmtêm um um títulotítulo e um e um

Ticker

Ticker opcionalopcional..



 Um Ticker é Um Ticker é apenasapenas um um textotexto queque ““andaanda” ”

continuamente

continuamente pelopelo Display.Display. continuamente

continuamente pelopelo Display.Display.



 DireçãoDireção e e velocidadevelocidade sãosão dependentesdependentes de de

implementação

implementação ((cadacada fabricantefabricante//modelomodelo podepode diferir

diferir).).



 É É exibidoexibido atravésatravés do do métodométodo setTickersetTicker do do

Displayable. Displayable.

(70)

Ticker Ticker

protected void startApp() throws

MIDletStateChangeException {

if (display==null) {

display = Display.getDisplay(this);

}

Form form = new Form("Exibindo Imagem");

Image image = null;

try {

try {

image = Image.createImage("/java.png");

} catch (IOException e) {

e.printStackTrace(); }

ImageItem imageItem = new ImageItem("Java

Logo",image,ImageItem.LAYOUT_CENTER,"(Java Logo)");

form.append(imageItem);

form.setTicker(new Ticker(“Exemplo de utilização de um Ticker”);

display.setCurrent(form); }

(71)

Ticker Ticker

(72)

TRATAMENTO

TRATAMENTO DE

DE EVENTOS

EVENTOS

MIDlets MIDlets

(73)

Command

Command



 Displayable (Displayable (paipai de de todostodos as as telastelas), ), suportasuporta um um

conceito

conceito flexívelflexível de interface de de interface de usuáriousuário, o , o Command.

Command.



 SemelhanteSemelhante aoao Button.Button. 

 SemelhanteSemelhante aoao Button.Button.



 PossuiPossui um um títulotítulo ((comocomo “Ok” “Ok” ouou ““CancelarCancelar”)”) 

 AplicaçãoAplicação devedeve responder responder apropriadamenteapropriadamente quandoquando

pressionado pressionado

(74)

Command

Command



 Não há a necessidade de se preocupar como ele Não há a necessidade de se preocupar como ele

será exibido em tela. será exibido em tela.



 É chamado independentemente da dispositivo É chamado independentemente da dispositivo

de entrada (keypad, soft button, touch screen, de entrada (keypad, soft button, touch screen, de entrada (keypad, soft button, touch screen, de entrada (keypad, soft button, touch screen, etc).

etc).



 CadaCada Displayable Displayable contémcontém umauma listalista de de seusseus

comandos

comandos, , gerenciadosgerenciados atravésatravés dos dos métodosmétodos::



 addCommandaddCommand  adicionaadiciona um Commandum Command 

(75)

Criando

Criando Commands

Commands



 Para Para criarcriar Commands, Commands, bastabasta instanciarinstanciar a a classeclasse

Command com um

Command com um nomenome, , tipotipo e e prioridadeprioridade



 O O nomenome é o é o exibidoexibido emem telatela (ex.: “Ok”)(ex.: “Ok”) 

 O O tipotipo é é usadousado parapara significarsignificar um um comandocomando usadousado 

 O O tipotipo é é usadousado parapara significarsignificar um um comandocomando usadousado

comumente comumente..



 A A prioridadeprioridade determinadetermina quemquem devedeve ser ser exibidoexibido com com

destaque

destaque emem casocaso de de haverhaver maismais comandoscomandos queque osos que

(76)

Tipos

Tipos de Command

de Command

Nome Significado

OK Resposta positiva a um dialog CANCEL Resposta negativa a um dialog EXIT Indica a saída da aplicação

ITEM Indica que o comando é específico para o ítem do Screen ou de elementos de um Choice.

elementos de um Choice. BACK Volta à tela anterior

STOP Pára a operação sendo executada HELP Exibe instruções da aplicação

(77)

Command

Command -- Prioridade

Prioridade



 A A implementaçãoimplementação do MIDP de do MIDP de cadacada fabricantefabricante é é

quem

quem gerenciagerencia comocomo exibirexibir Commands.Commands.



 Se Se houverhouver maismais Commands Commands queque soft buttons, soft buttons, osos

comandos

comandos excedentesexcedentes sãosão agrupadosagrupados emem um um comandos

comandos excedentesexcedentes sãosão agrupadosagrupados emem um um menu

menu associadoassociado a a umauma soft button.soft button.



(78)

Command

Command -- Prioridade

Prioridade



 TipicamenteTipicamente a a implementaçãoimplementação primeiroprimeiro escolheescolhe

a

a localizaçãolocalização do Command do Command baseadobaseado emem seuseu tipotipo, , e

e entãoentão exibeexibe Commands Commands similaressimilares baseadosbaseados emem sua

sua prioridadeprioridade:: sua

sua prioridadeprioridade::



 CasoCaso hajahaja um Command com um Command com prioridadeprioridade 0 e 0 e váriosvários

com a

com a prioridadeprioridade 1 num 1 num dispositivodispositivo com 2 soft com 2 soft buttons,

buttons, osos de de prioridadeprioridade 1 1 sãosão agrupadosagrupados (se (se foremforem do

(79)

Command

Command -- Prioridade

Prioridade

protected void startApp() throws MIDletStateChangeException { if (display==null) {

display = Display.getDisplay(this);

}

Command comandoOk = new Command("OK", Command.OK,0);

Command comandoVoltar = new Command("Voltar", Command.BACK,1);

Command comandoAjuda = new Command("Ajuda", Command.HELP,1);

Command.HELP,1);

Command comandoCancelar = new Command("Cancelar", Command.CANCEL,1);

Command comandoSair = new Command("Sair", Command.EXIT,1);

form.addCommand(comandoOk); form.addCommand(comandoVoltar); form.addCommand(comandoAjuda); form.addCommand(comandoCancelar); form.addCommand(comandoSair); display.setCurrent(form); }

(80)

Command

Command -- Prioridade

Prioridade

protected void startApp() throws MIDletStateChangeException { if (display==null) {

display = Display.getDisplay(this);

}

Command comandoVoltar = new Command("Voltar", Command.BACK,4);

Command comandoSoma = new Command("Soma", Command.ITEM,2);

Command comandoSubtracao = new Command("Subtração", Command comandoSubtracao = new Command("Subtração", Command.ITEM,3);

Command comandoDivisao = new Command("Divisão", Command.ITEM,1);

Command comandoMultiplicacao = new

Command("Multiplicação", Command.ITEM,0);

form.addCommand(comandoVoltar); form.addCommand(comandoSoma); form.addCommand(comandoSubtracao); form.addCommand(comandoDivisao); form.addCommand(comandoMultiplicacao); display.setCurrent(form); }

(81)

Command

Command -- Manipulando

Manipulando



 AoAo adicionaradicionar Commands Commands aosaos DisplayablesDisplayables, , eleele é é

exibido

exibido emem telatela. . PorémPorém, nada , nada aconteceráacontecerá automaticamente

automaticamente quandoquando o o usuáriousuário pressionápressioná--lo, lo, independente

independente do do tipotipo do Command.do Command. independente

independente do do tipotipo do Command.do Command.



 Um Um objetoobjeto chamadochamado listener é listener é notificadonotificado

quando

quando o o usuáriousuário pressionapressiona algumalgum Command, Command, desde

desde queque o Displayable se o Displayable se registreregistre comocomo taltal..



 O listener é um O listener é um objetoobjeto queque implementaimplementa a a

interface

(82)

CommandListener

CommandListener



 Para se registrar Para se registrar comocomo listener, user o listener, user o métodométodo::



 setCommandListenersetCommandListener((CommandListenerCommandListener l);l);



 ImplementandoImplementando um um CommandListenerCommandListener implicaimplica

na

na implementaçãoimplementação do do métodométodo:: na

na implementaçãoimplementação do do métodométodo::



 public void public void commandActioncommandAction(Command c, Displayable (Command c, Displayable ii)) 

 IndicaIndica queque o Command “c” o Command “c” ocorreuocorreu no Displayable no Displayable ““ii”.”. 

 MétodoMétodo nãonão devedeve ser ser bloqueantebloqueante. . OperaçõesOperações demoradasdemoradas devem

(83)

CommandListener

CommandListener -- Exemplo

Exemplo

protected void startApp() throws MIDletStateChangeException { if (display==null) {

display = Display.getDisplay(this);

}

Form form = new Form("Testando CommandListener");

Command comandoSair = new Command("Sair", Command.EXIT,0);

form.addCommand(comandoSair);

form.setCommandListener(new TestCommandListener());

display.setCurrent(form); }

class TestCommandListener implements CommandListener { public void commandAction(Command c, Displayable d) {

notifyDestroyed(); }

(84)

PERSISTÊNCIA

PERSISTÊNCIA

Java ME Java ME

(85)

Persistência

Persistência

RecordStore RecordStore



 ObrigatórioObrigatório emem qualquerqualquer

implementação

implementação do MIDP.do MIDP.



 ApenasApenas 8kb de 8kb de memóriamemória

persistente

persistente é é obrigatórioobrigatório..

FileConnection FileConnection



 DispositivoDispositivo devedeve conterconter

implementação

implementação dada JSRJSR--75.75.



 DeveDeve ser ser utilizadoutilizado emem

aplicações

aplicações queque armazenamarmazenam persistente

persistente é é obrigatórioobrigatório..



 EficienteEficiente parapara aplicaçõesaplicações queque

armazenem

armazenem pouquíssimapouquíssima informação

informação..



 AcessadoAcessado vomovomo bancobanco de de

dados, de forma

dados, de forma sequencialsequencial..

aplicações

aplicações queque armazenamarmazenam bastante

bastante informaçãoinformação..



 AcessadoAcessado comocomo sistemasistema de de

arquivos

arquivos ((diretóriodiretório e e arquivos

arquivos), ), nãonão comocomo bancobanco de dados.

(86)

PERSISTÊNCIA

PERSISTÊNCIA -- RECORDSTORE

RECORDSTORE

Java ME Java ME

(87)

Persistência

Persistência -- RecordStore

RecordStore



 Um Um RecordStoreRecordStore é um é um bancobanco de dados de dados

minúsculo

minúsculo queque contémcontém registrosregistros..



 O O escopoescopo de um de um RecordStoreRecordStore podepode ser ser limitadolimitado

a um

a um MIDletMIDlet suítesuíte ouou compartilhadocompartilhado entre entre a um

a um MIDletMIDlet suítesuíte ouou compartilhadocompartilhado entre entre MIDlet

MIDlet suítessuítes distintosdistintos..



 São São identificadosidentificados porpor um um nomenome. . DentroDentro de de umauma

MIDlet

(88)

Persistência

(89)

RecordStore

RecordStore -- Métodos

Métodos

Nome do método Est. Parâmetros Descrição

openRecordStore Sim String nome, boolean

criaSeNaoExistir, int autMode, boolean gravavel

Abre o RecordStore e o retorna para uso. Se o 2° parâmetro for true e o

RecordStore não existir, é criado. O modo de autorização pode ser privado ou compartilhado. O 4° parâmetro diz se outros MIDlets suítes podem gravar.

outros MIDlets suítes podem gravar.

closeRecordStore Não - Fecha o RecordStore corrente.

listRecordStores Sim - Retorna um array de Strings contendo o nome de todos os RecordStores

existentes na suíte de MIDlets atual. Se não existir nenhum, retorna null.

deleteRecordStore Sim String nome Exclui o RecordStore com o nome passado por parãmetro.

(90)

RecordStore

RecordStore -- Métodos

Métodos

Nome do método

Est. Parâmetros Descrição

addRecord Não byte[] dados, int inicio, int numBytes

Adiciona um registro e retorna o seu índice (int). É passado um array de bytes contendo os dados, o índice inicial e o número de bytes a armazenar.

deleteRecord Não int recordId Delete o registro com o id passado.

getRecord Não int recordId Retorna o registro desejado, em formato de array de bytes (byte[]).

getVersion Não - Cada vez que o RecordStore é modificado, sua versão é incrementada. Retorna a

versão atual.

getNumRecords Não - Retorna o número de registros (int) do RecordStore atual..

(91)

RecordStore

(92)

PERSISTÊNCIA

PERSISTÊNCIA -- FILECONNECTION

FILECONNECTION

Java ME

(93)

Persistência

Persistência –

– File Connection

File Connection



 DispositivosDispositivos modernosmodernos possuempossuem slots slots parapara

cartões

cartões de de memóriamemória flash flash comocomo::



 Secure Data (SD) CardsSecure Data (SD) Cards 

 Compact FlashCompact Flash 

 Compact FlashCompact Flash 

 Memory StickMemory Stick



 TaisTais cartõescartões de de memóriamemória expandemexpandem a a memóriamemória

disponível

disponível parapara muitosmuitos megabytes megabytes ouou gigabytes.gigabytes.



 O O RecordStoreRecordStore é é ineficienteineficiente parapara gerenciargerenciar taistais

armazenamentos

(94)

Persistência

Persistência –

– File Connection

File Connection



 AcessadoAcessado comocomo sistemasistema de de arquivosarquivos ((diretóriosdiretórios e e

arquivos arquivos))



 API API contidacontida no no pacotepacote javax.microedition.io.filejavax.microedition.io.file 

 AssimAssim comocomo no PC, no PC, podepode--se se lerler e e escreverescrever emem 

 AssimAssim comocomo no PC, no PC, podepode--se se lerler e e escreverescrever emem

arquivos

arquivos, , criarcriar e remover e remover diretóriosdiretórios, etc., etc.



 O O sistemasistema de de arquivosarquivos expostoexposto porpor essaessa API é API é

geralmente

(95)

Persistência

(96)

Persistência

Persistência –

– File Connection

File Connection



 A interface principal A interface principal destadesta API é a API é a

FileConnection FileConnection..



 Para Para verificarverificar se o se o dispositivodispositivo possuipossui a JSRa JSR--7575



 String versao = System.getProperty(String versao = System.getProperty( 

 String versao = System.getProperty(String versao = System.getProperty(

"microedition.io.file.FileConnection.version") "microedition.io.file.FileConnection.version")



 Se null for retornado, a API não existe.Se null for retornado, a API não existe.



 Para Para abrirabrir conexãoconexão aoao sistemasistema de de arquivosarquivos::



(97)

FileConnection

FileConnection -- Métodos

Métodos

Nome do método Descrição

isDirectory Retorna true se o path referenciado for um diretório, false caso contrário.

isHidden Retorna true se o arquivo ou dir. for oculto.

exists Retorna true se o arquivo ou diretório existe.

mkdir Cria o diretório.

mkdir Cria o diretório.

delete Deleta o arquivo ou diretório atual.

list Retorna um array de strings contendo os arquivos do diretório atual.

canRead Retorna true se o arquivo atual pode ser lido.

canWrite Retorna true se o arquivo atual pode ser modificado

fileSize Retorna o tamanho do arquivo (long).

(98)

FileSystemRegistry

FileSystemRegistry



 ClasseClasse utilizadautilizada parapara descobrirdescobrir todostodos osos sistemassistemas

de

de arquivoarquivo existentesexistentes..



 CadaCada sistemasistema de de arquivosarquivos tem o tem o seuseu nomenome únicoúnico.. 

 MétodoMétodo queque retornaretorna todostodos osos sistemassistemas: : 

 MétodoMétodo queque retornaretorna todostodos osos sistemassistemas: :



 public static Enumeration listRoots()public static Enumeration listRoots() 

 RetornaRetorna um Enumeration de Strings. um Enumeration de Strings. CadaCada elementoelemento é um é um

sistema

sistema de de arquivosarquivos..

Enumeration raizes = FileSystemRegistry.listRoots(); String raizAtual = null;

while (raizes.hasMoreElements()) {

raizAtual = (String) raizes.nextElement();

(99)

FileSystemListener

FileSystemListener



 Interface Interface utilizadautilizada parapara notificarnotificar a a adiçãoadição e e

remoção

remoção de de memóriasmemórias externasexternas. . ChamadoChamado pelospelos métodos

métodos dada classeclasse FileSystemRegistryFileSystemRegistry::



 addFileSystemListeneraddFileSystemListener  adicionaadiciona um listenerum listener 

 addFileSystemListeneraddFileSystemListener  adicionaadiciona um listenerum listener 

 removeFileSystemListenerremoveFileSystemListener  remove um listenerremove um listener



 A interface A interface provêprovê apenasapenas um um métodométodo::



 rootChangedrootChanged((intint estadoestado, String , String nomeRaiznomeRaiz))



 Estado Estado podepode ser ROOT_ADDED ser ROOT_ADDED ouou

ROOT_REMOVED

(100)

GENERIC CONNECTION

GENERIC CONNECTION

FRAMEWORK (GCF)

FRAMEWORK (GCF)

Java ME Java ME

(101)

Generic Connection Framework

Generic Connection Framework



 ContidoContido no no pacotepacote javax.microedition.io.javax.microedition.io. 

 BaseadoBaseado nana interface Connection.interface Connection. 

 O link entre a interface Connection e O link entre a interface Connection e conexãoconexão

propriamente

propriamente ditadita é é atravésatravés dada classeclasse Connector.Connector. propriamente

propriamente ditadita é é atravésatravés dada classeclasse Connector.Connector.



 A A idéiaidéia é é passarpassar umauma String String aoao Connector, Connector, queque

retornará

retornará o o tipotipo de Connection de Connection específicoespecífico..



 A String de A String de conexãoconexão é é comocomo umauma URL, URL, masmas

com

(102)

Generic Connection Framework

Generic Connection Framework



 O Generic Connection Framework (GCF) O Generic Connection Framework (GCF) foifoi

definido

definido originalmenteoriginalmente parapara o CLDC 1.0o CLDC 1.0



 APIs APIs definidasdefinidas pelopelo java.net e java.io java.net e java.io erameram

consideradas

consideradas muitomuito grandesgrandes parapara caber caber emem consideradas

consideradas muitomuito grandesgrandes parapara caber caber emem dispositivos

dispositivos tãotão limitadoslimitados de de memóriamemória comocomo eram

eram osos dispositivosdispositivos móveismóveis



 GCF é GCF é utilizadoutilizado tambémtambém emem pacotespacotes opcionaisopcionais

como

(103)

Generic Connection Framework

Generic Connection Framework



 O GCF é O GCF é umauma hierarquiahierarquia simples de classes e simples de classes e

interfaces

interfaces parapara criarcriar conexõesconexões (http, socket, etc) (http, socket, etc) e

e executarexecutar operaçõesoperações de I/O.de I/O.



 Como o Como o nomenome indicaindica, o GCF , o GCF provêprovê umauma forma forma 

 Como o Como o nomenome indicaindica, o GCF , o GCF provêprovê umauma forma forma

genérica

genérica de de conectividadeconectividade..



 É É genéricogenérico poispois provêprovê APIs APIs genéricasgenéricas parapara todostodos

os

os tipostipos de de conexãoconexão



 BaseadaBaseada emem pacotespacotes 

(104)

Generic Connection Framework

Generic Connection Framework



 A A generalizaçãogeneralização é é possívelpossível devidodevido aoao usouso de:de:



 UmaUma hierarquiahierarquia de interfaces de interfaces extensívelextensível 

 UmaUma factory de factory de conexõesconexões 

 Uniform Resource Locators (URLs) Uniform Resource Locators (URLs) padronizadaspadronizadas 

 Uniform Resource Locators (URLs) Uniform Resource Locators (URLs) padronizadaspadronizadas

para

(105)

MIDlets

(106)

Generic Connection Framework

Generic Connection Framework



 No No topotopo dada hierarquiahierarquia, a interface Connection. , a interface Connection.

Todas

Todas as as conexõesconexões devemdevem extender extender dessadessa interface.

interface.



 Para Para conexõesconexões com I/O com I/O baseadobaseado emem pacotespacotes, o , o 

 Para Para conexõesconexões com I/O com I/O baseadobaseado emem pacotespacotes, o , o

GCF define a interface

GCF define a interface DatagramConnectionDatagramConnection..



 Para Para conexõesconexões baseadasbaseadas emem streams, o GCF streams, o GCF

define

define InputConnectionInputConnection, , OutputConnectionOutputConnection, , StreamConnection

StreamConnection ((queque extendeextende as as duasduas anteriores

(107)

Generic Connection Framework

Generic Connection Framework



 EmEm adiçãoadição à à hierarquiahierarquia de de conexõesconexões, o GCF , o GCF

provê

provê a a classeclasse Connector, Connector, queque é a factory de é a factory de conexões

conexões



 A A exceçãoexceção ConnectionNotFoundExceptionConnectionNotFoundException é é 

 A A exceçãoexceção ConnectionNotFoundExceptionConnectionNotFoundException é é

usada

usada parapara indicarindicar queque a a conexãoconexão nãonão pôdepôde ser ser criada

(108)

Generic Connection Framework

Generic Connection Framework



 A A conexãoconexão devedeve se se dardar porpor

Connector.open

Connector.open(String name). (String name).



 O O parâmetroparâmetro passadopassado devedeve seguirseguir a RFC 2396, a RFC 2396,

ou

ou sejaseja:: ou

ou sejaseja::



 {scheme}:[{address}][{{scheme}:[{address}][{paramsparams}], }], ondeonde:: 

 {scheme} é o {scheme} é o nomenome do do protocoloprotocolo, , comocomo http.http. 

 {address} {address} refererefere--se a se a algumalgum endereçoendereço de de rederede 

(109)

Generic Connection Framework

Generic Connection Framework



 PodePode--se se passarpassar outrosoutros parâmetrosparâmetros nana conexãoconexão::



 Connector.openConnector.open(String name, (String name, intint mode, mode, booleanboolean

timeouts). timeouts).



 O O parâmetroparâmetro “mode” “mode” podepode ser ser Connector.READConnector.READ, , 

 O O parâmetroparâmetro “mode” “mode” podepode ser ser Connector.READConnector.READ, ,

Connector.WRITE

Connector.WRITE, , Connector.READ_WRITEConnector.READ_WRITE..



 O O parâmetroparâmetro “timeouts” “timeouts” indicaindica queque o o chamadorchamador

quer

(110)

Generic Connection Framework

Generic Connection Framework



 A String de A String de conexãoconexão

“socket://suaempresa.com:1455”

“socket://suaempresa.com:1455” abreabre umauma conexão

conexão TCP/IP com o host “suaempresa.com” TCP/IP com o host “suaempresa.com” na

na portaporta “1455” e “1455” e retornaretorna um um na

na portaporta “1455” e “1455” e retornaretorna um um StreamConnection

(111)

Generic Connection Framework

Generic Connection Framework



 SocketConnectionSocketConnection::



 String String urlurl = "socket://www.j2medeveloper.com:80"; = "socket://www.j2medeveloper.com:80";

SocketConnection

SocketConnection c = c =

((SocketConnectionSocketConnection))Connector.openConnector.open((urlurl););



 HttpConnectionHttpConnection::



 String String urlurl = =

"http://www.j2medeveloper:80/com/myServlet"; "http://www.j2medeveloper:80/com/myServlet"; HttpConnection

HttpConnection c = c =

(112)

Generic Connection Framework

Generic Connection Framework



 FileConnectionFileConnection::



 String String urlurl = "file:///myResourceFile.res"; = "file:///myResourceFile.res";

FileConnection

FileConnection c = c =

((FileConnectionFileConnection))Connector.openConnector.open((urlurl););



 DatagramConnectionDatagramConnection::



 String url = String url =

"datagram://www.j2medeveloper.com:7001"; "datagram://www.j2medeveloper.com:7001"; UDPDatagramConnection c = UDPDatagramConnection c = (UDPDatagramConnection)Connector.open(url); (UDPDatagramConnection)Connector.open(url);

(113)

MIDlets

(114)

Generic Connection Framework

Generic Connection Framework

URL Scheme

Conectividade GCF Interface Definido por

btl2cap Bluetooth L2CAPConnection JSR-82 (opcional)

datagram Datagram DatagramConnection Todos os perfis CDC/CLDC. (opcional)

file File Access FileConnection JSR-75 (opcional) file File Access FileConnection JSR-75 (opcional) http HyperText

Transport Protocol

HttpConnection MIDP 1.0, 2.0, Foundation Profile e JSR 197.

https Secure HTTP HttpsConnection MIDP 2.0.

(115)

Generic Connection Framework

Generic Connection Framework

URL Scheme

Conectividade GCF Interface Definido por

sms mms cbs Short Message Service, Multimedia Messaging Service, Cell Broadcast MessageConnection JSR-120, JSE-205. (opcional) Cell Broadcast SMS apdu jcrmi

Security Element APDUConnection, JavaCardRMIException

Todos os perfis CDC/CLDC. (opcional)

socket Client Socket SocketConnection MIDP 2.0. (opcional) serversocket Server Socket ServerSocketConnection MIDP 2.0. (opcional) datagram UDP Datagram UDPDatagramConnection MIDP 2.0. (opcional)

Referências

Documentos relacionados

É possível, assim, exemplificar o processo permanente de caça às bruxas desde a sub- representação político-partidária de mulheres (sobretudo negras, periféricas,

para ocultar partes da cena (movimento ao fundo, tal como movimento nas árvores, luzes pulsantes, estradas movimentadas, etc.) que não devem ser considerados para análise de fluxo

Para saber como o amostrador Headspace 7697A da Agilent pode ajudar a alcançar os resultados esperados, visite www.agilent.com/chem/7697A Abund.. Nenhum outro software

A espectrofotometria é uma técnica quantitativa e qualitativa, a qual se A espectrofotometria é uma técnica quantitativa e qualitativa, a qual se baseia no fato de que uma

Se Mouillaud aponta as qualidades de fazer saber e fazer crer do jornalismo, aos jornais e programas populares, obviamente acrescenta-se a propriedade de fazer sentir

A reforma a vapor do etanol (Equação 2) também é uma rota promissora para se obter hidrogênio renovável, uma vez que o etanol pode ser produzido diretamente via fermentação

010523 DIANA NEGRAO CAVALCANTI 14/05/1970 INSCRIÇÃO OK. 262721 JOSE CARLOS N AZEVEDO 03/02/1966

Durante o período tivemos baixo número de pacientes regulados para os ambulatórios, fonte principal de captação de pacientes, onde temos em torno de 40% do total de