Programação Mobile
Programação Mobile
Luiz Felipe S. L. Guimarães Luiz Felipe S. L. Guimarães [email protected] [email protected]
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 ?
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
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
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
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
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!
Ambientes
Ambientes de
de Desenvolvimento
Desenvolvimento
EclipseEclipse NetBeansNetBeans JbuilderJbuilder Etc… Etc… Etc…Etc…
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
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
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
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
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.
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..
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
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
Contextualização
Contextualização
Contextualização
Contextualização
Java ME = CLDC + CDCJava ME = CLDC + CDC Java ME = CLDC + CDCJava ME = CLDC + CDC CDC CDC contémcontém CLDCCLDCJava 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
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
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
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
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
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
Contextualização
Contextualização
Contextualização
Contextualização
Arquitetura
Arquitetura
Arquitetura
Arquitetura
Arquitetura
Arquitetura
CICLO
CICLO DE
DE VIDA
VIDA
MIDlets MIDlets
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
MIDlets
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().().
MIDlets
MIDlets –– CicloCiclo de Vida de Vida
Application Management System (AMS) Application Management System (AMS) podepode
chamar
chamar o o pauseApppauseApp() e () e destroyAppdestroyApp().().
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
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()");
} }
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
GRAPHICAL USER INTERFACE
GRAPHICAL USER INTERFACE
MIDlets MIDlets
MIDlets
MIDlets
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().().
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
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
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
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
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
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);
Displayable
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
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);
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
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
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);
Displayable
Displayable Screen Screen AlertAlert
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)
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
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,
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
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); }
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)
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); }
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); }
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); }
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); }
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); }
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
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); }
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
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); }
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.
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); }
Ticker Ticker
TRATAMENTO
TRATAMENTO DE
DE EVENTOS
EVENTOS
MIDlets MIDlets
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
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
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
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
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.
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
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); }
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); }
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
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
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(); }
PERSISTÊNCIA
PERSISTÊNCIA
Java ME Java ME
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.
PERSISTÊNCIA
PERSISTÊNCIA -- RECORDSTORE
RECORDSTORE
Java ME Java ME
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
Persistência
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.
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..
RecordStore
PERSISTÊNCIA
PERSISTÊNCIA -- FILECONNECTION
FILECONNECTION
Java MEPersistê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
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
Persistência
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::
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).
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();
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
GENERIC CONNECTION
GENERIC CONNECTION
FRAMEWORK (GCF)
FRAMEWORK (GCF)
Java ME Java MEGeneric 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
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
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
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
MIDlets
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
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
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
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
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
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 =
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);
MIDlets
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.
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)