conectividade - facombacala/cm/conectividade.pdf · java para dispositivos móveis - desenvolvendo...
TRANSCRIPT
![Page 1: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/1.jpg)
Desenvolvimento de Sistemas WEb
Computação Móvel
CONECTIVIDADE
![Page 2: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/2.jpg)
Conectividade em Java ME
Conectividade( redes) em Java ME: ◦ Flexível para suportar uma variedade de dispositivos
◦ Muitos dispositivos específicos ao mesmo tempo.
Solução:
◦ GCF (Generic Connection Framework) ◦ Foi criado para oferecer conectividade de acordo com as características heterogêneas do ambiente de computação móvel
![Page 3: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/3.jpg)
GCF (Generic Connection Framework)
A ideia do GCF é definir as abstrações de rede e arquivos I/O de forma tão genérica quanto possível.
Essas abstrações são definidas como interfaces Java.
Os fabricantes de dispositivos escolhem quais interfaces serão implementadas e aplicadas com base nas capacidades de seus dispositivos MIDP.
![Page 4: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/4.jpg)
GCF (Generic Connection Framework)
Composto por duas classes:
◦ Connector e PushRegistry
A classe Connector é usada para criar objetos de conexão
A classe PushRegistry é usada para manter uma lista de conexões de entrada
![Page 5: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/5.jpg)
As interfaces de conexão do GCF definem os tipos de comunicação que podem ser realizadas
Conexões simples de entrada e saída
Conexões com datagramas (transmissão de pacotes sem mecanismo de confiança)
Com sockets (um link de comunicação fim-a-fim em redes IP)
Com HTTP (Hypertext Transfer Protocol, protocolo de transmissão de dados entre clientes e servidores)
Entre outras formas…. Consultar a documentação!!!!
GCF (Generic Connection Framework)
Interfaces
![Page 6: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/6.jpg)
Fonte: Jakl, 2009 - http://www.symbianresources.com
GCF – Diagrama de Classes Básico
![Page 7: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/7.jpg)
GCF – Diagrama de Classes MIDP
Fonte: Jakl, 2009 - http://www.symbianresources.com
![Page 8: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/8.jpg)
GCF (Generic Connection Framework)
Pacotes Opcionais
Bluetooth
Arquivos
SmartCards
Messaging
….
![Page 9: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/9.jpg)
GCF (Generic Connection Framework) A URL de Conexão
Argumentos de conexão são especificados através do seguinte formato de endereçamento:
![Page 10: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/10.jpg)
GCF (Generic Connection Framework)
Classe Connector
A classe Connector implementa os métodos necessários para abertura de conexões
Essencialmente, essas conexões podem ser usadas para enviar (escrever) e receber (ler) dados
Os tipos de conexão podem ser:
◦ WRITE : Modo de acesso somente escrita – envio de dados
◦ READ : Modo de acesso somente leitura – recepção de dados
◦ READ_WRITE : Modo de acesso de leitura e escrita
Ao criar uma conexão, é opcional a definição do modo de acesso. Porém, se o modo de acesso não for especificado, o modo READ_WRITE é usado por padrão
![Page 11: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/11.jpg)
GCF (Generic Connection Framework)
Classe Connector – Métodos Relacionados
O método mais básico a ser usado é o da criação da conexão:
◦ Connection open (String string_conexao)
A String de conexão deve seguir o formato
◦ protocolo:[alvo][parâmetros]
protocolo: indica o tipo de conexão a ser criada
◦ Deve-se escolher esse parâmetro de acordo com a necessidade da aplicação
◦ Tipos de protocolo: socket, datagram, http, file e com
![Page 12: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/12.jpg)
GCF (Generic Connection Framework)
Classe Connector – Métodos Relacionados
alvo:
◦ um host (um computador ou servidor que está na rede)
◦ uma porta de um host
◦ um arquivo ou uma porta de comunicação
a escolha do alvo depende do tipo de protocolo definido anteriormente
parâmetros: (opcional)
também depende do tipo de protocolo selecionado
![Page 13: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/13.jpg)
GCF (Generic Connection Framework)
Classe Connector – Abertura de Conexão
A sobrecarga do método open permite a sua utilização de três formas distintas
static Connection
open (String name) Cria e abre uma conexão
static Connection
open (String name, int mode) Cria e abre uma conexão com a definição
de um modo de acesso
static Connection
open (String name, int mode,
boolean timeout)
Cria e abre uma conexão com a definição
de um modo de acesso e um timeout
![Page 14: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/14.jpg)
GCF (Generic Connection Framework)
Exemplos de Conexão
Com o protocolo HTTP:
◦ Connection c = Connector.open (“http://j2me.datamazon.com”)
◦ Connection c = Connector.open (“http://j2me.datamazon.com”,0)
◦ Connection c = Connector.open (“http://j2me.datamazon.com”,0,1000)
Com um socket: ◦ Connection cs = Connector.open
(“socket://localhost:9000”)
Com um arquivo:
◦ Connection ca = Connector.open (“file://dados.txt”)
Para fechar uma conexão: ◦ void close()
![Page 15: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/15.jpg)
GCF (Generic Connection Framework)
Exemplo import javax.microedition.io.*;
import javax.microedition.midlet.*;
public class TesteConexao extends MIDlet {
public TesteConexao() {}
public void pauseApp(){}
public void destroyApp(boolean unconditional){
notifyDestroyed();}
public void startApp(){
try {
String URL ="http://j2me.datamazon.com";
Connection conexao = Connector.open(URL, Connector.READ_WRITE);
System.out.println("Conectado com "+URL );
conexao.close();
System.out.println("Conexao fechada");
}
catch( Exception exc ){
System.out.println("URL não pode ser aberta -"+exc );
}
destroyApp(true);
}
}
Fonte
Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME
por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3
![Page 16: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/16.jpg)
Conexão Assíncrona
GCF (Generic Connection Framework)
Fonte: Jakl, 2009 - http://www.symbianresources.com
![Page 17: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/17.jpg)
Conexão Assíncrona
GCF (Generic Connection Framework)
Solução: Para evitar problemas de deadlock ou travamento do dispositivo, é recomendada a criação de threads específicas para a execução de funções de comunicação em rede
![Page 18: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/18.jpg)
GCF (Generic Connection Framework) Leitura de Dados / Fluxo de Dados
Para ler e receber dados da conexão, deve-se implementar fluxo de dados ◦ Fluxo de entrada usado para ler conteúdo
◦ Fluxo de saída usado para enviar conteúdo
Os fluxos são obtidos a partir da referência ao objeto da conexão já estabelecida
Para conexões em que as duas partes desejam enviar e receber dados: ◦ Utilização da interface StreamConnection através dos
métodos InputStreamConnection e OutputStreamConnection
![Page 19: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/19.jpg)
GCF (Generic Connection Framework) Leitura de Dados / Fluxo de Dados
Para analisar os dados que serão enviados/recebidos e manipular a conexão de forma mais precisa: ◦ Utilização da interface ContentConnection
◦ Disponibiliza métodos como getType()
Métodos relacionados a fluxos dados: ◦ static DataInputStream openDataInputStream (String
name)
◦ static DataOutputStream openDataOutputStream (String name)
◦ static InputStream openInputStream (String name)
◦ static OutputStream openOutputStream (String name)
![Page 20: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/20.jpg)
GCF (Generic Connection Framework) Leitura de Dados / Fluxo de Dados
Exemplo: conexão ContentConnection e fluxo de entrada com InputStream
import java.io.*;
import javax.microedition.io.*;
import javax.microedition.midlet.*;
public class TesteStream extends MIDlet {
public TesteStream() {}
public void pauseApp(){}
public void destroyApp(boolean unconditional){ notifyDestroyed();}
public void startApp(){
try {
String URL ="http://j2me.datamazon.com";
ContentConnection conexao = (ContentConnection)Connector.open(URL);
InputStream IS = conexao.openInputStream();
int conteudo;
System.out.println( "Tipo de conteúdo é "+ conexao.getType() );
while( ( conteudo = IS.read() ) != -1 ){
System.out.print((char)conteudo);
}
IS.close();
conexao.close();
}
catch( ConnectionNotFoundException exc ){
System.out.println("URL não pode ser aberta" );
}
catch(IOException exc ){
System.out.println( exc.toString() );
}
destroyApp(true);
}
}
Fonte: Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME
por Thienne M. Johnson ; Novatec Editora LTDA
![Page 21: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/21.jpg)
GCF (Generic Connection Framework) Leitura de Dados / Fluxo de Dados
Atenção
Não é possível recuperar/manipular uma referência à conexão real, mas somente aos fluxos de entrada e saída
Isso significa que não podemos manipular ou pesquisar a conexão diretamente
![Page 22: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/22.jpg)
GCF (Generic Connection Framework) Leitura de Dados / Fluxo de Dados
Exemplo: conexão StreamConnection para acessar um servidor e buscar um arquivo texto import java.io.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class BuscaArquivoTexto extends MIDlet {
private Display display;
public BuscaArquivoTexto() {display = Display.getDisplay(this);}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
public void startApp() {
String URL = "http://j2me.datamazon.com/arquivoteste.txt";
StreamConnection SC = null;
InputStream IS = null;
StringBuffer SB = new StringBuffer();
TextBox textbox = null;
try {
SC = (StreamConnection)Connector.open(URL);
IS = SC.openInputStream();
int dadosEntrada;
while((dadosEntrada = IS.read()) != -1) {
SB.append((char) dadosEntrada);
}
System.out.println(SB.toString());
textbox = new TextBox("Teste de StreamConnection", SB.toString(), 1024,
0);
if(IS != null) {
IS.close();
}
if(SC != null) {
SC.close();
}
display.setCurrent(textbox);
} catch (Exception exc) {
System.out.println("Exception " + exc);
}
}
}
![Page 23: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/23.jpg)
GCF (Generic Connection Framework) Leitura de Dados / Fluxo de Dados
Exemplo: conexão que acessa um servidor e busca uma arquivo de imagem do tipo png public class BuscaImagem extends MIDlet {
private Display display;
private Form tela;
public BuscaImagem() { display = Display.getDisplay(this);}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
public void startApp() {
String URL = "http://j2me.datamazon.com/Midlets.png";
InputStream IS = null;
Image img = null;
try {
IS = Connector.openInputStream(URL);
ByteArrayOutputStream BAOS = new ByteArrayOutputStream();
int dadosEntrada;
while ((dadosEntrada = IS.read()) != -1)
BAOS.write(dadosEntrada);
byte dadosImagem[] = BAOS.toByteArray();
img = Image.createImage(dadosImagem, 0, dadosImagem.length);
if (img != null){
ImageItem imagem = new ImageItem("Nova Imagem", img, ImageItem.LAYOUT_CENTER, null);
int largura = img.getWidth();
int altura = img.getHeight();
tela = new Form("Nova Imagem "+largura+"x"+altura );
tela.append(imagem);
}else
tela = new Form("Erro de download da imagem");
display.setCurrent(tela);
if(IS != null)
IS.close();
} catch (Exception exc) {
System.out.println("Exception " + exc);
}
}
}
![Page 24: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/24.jpg)
GCF (Generic Connection Framework) Leitura de Dados / Fluxo de Dados
Exemplo: Conexão com HTTP import java.io.*;
import javax.microedition.io.*;
import javax.microedition.midlet.*;
public class TesteHTTP extends MIDlet {
public TesteHTTP() {}
public void pauseApp(){}
public void destroyApp(boolean unconditional){ notifyDestroyed();}
public void startApp(){
try {
String URL ="http://j2me.datamazon.com";
HttpConnection conexao = (HttpConnection)Connector.open(URL);
InputStream IS = conexao.openInputStream();
System.out.println( "Tipo de conteúdo é "+ conexao.getType() );
System.out.println("Cabeçalho= "+conexao.getHeaderField(1));
System.out.println("Porção Arquivo= "+conexao.getFile());
System.out.println("Host= "+conexao.getHost());
System.out.println("Porta= "+conexao.getPort());
System.out.println("Protocolo= "+conexao.getProtocol());
System.out.println("Tipo de requisição= "+conexao.getRequestMethod());
System.out.println("Código de resposta= "+conexao.getResponseCode());
System.out.println("Mensagem de resposta= "+conexao.getResponseMessage());
IS.close();
conexao.close();
}
catch( ConnectionNotFoundException exc ){
System.out.println("URI não pode ser aberta" );
}
catch( IOException exc ){
System.out.println( exc.toString() );
}
destroyApp(true);
}
}
![Page 25: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/25.jpg)
GCF (Generic Connection Framework) Conexões com Sockets
Sockets são usados para criar um link de comunicação entre um cliente e um servidor (dispositivo móvel ou não)
Etapas:
◦ Primeiramente especificar o socket do lado do servidor através da interface ServerSocketConnection , como no exemplo:
ServerSocketConnection conexaoServidor =
(ServerSocketConnection)Connector.open(“socket://<porta>”);
◦ No lado do cliente usamos o formato:
SocketConnection conexaoServidor = (SocketConnection)Connector.open(“socket://<host>:<porta>”);
É possível também especificar algumas opções para comunicação com sockets, como: tamanho de buffer de escrita, tempo para deixar a porta de comunicação aberta, tamanho do buffer de recepção e de envio,...
Ver documentação....
![Page 26: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/26.jpg)
GCF (Generic Connection Framework) Exemplo: Conexão com Sockets
Socket Cliente
import java.io.*;
import javax.microedition.io.*;
import javax.microedition.midlet.*;
public class SocketCliente extends MIDlet implements Runnable{
public SocketCliente() {}
public void destroyApp(boolean unconditional) {}
protected void pauseApp() {}
protected void startApp(){
Thread t = new Thread(this);
t.start();
}
public void run() {
try {
SocketConnection conexao = SocketConnection)Connector.open("socket://localhost:5000");
System.out.println("CLIENTE: Conectado ao servidor");
InputStream IS = conexao.openInputStream();
while (true) {
StringBuffer buff = new StringBuffer();
int dadosEntrada = 0;
while (((dadosEntrada = IS.read()) != '\n') && (dadosEntrada != -1)) {
buff.append((char)dadosEntrada);
}
if (dadosEntrada == -1) {
break;
}
System.out.println("CLIENTE: Mensagem recebida = " + buff.toString());
}
IS.close();
conexao.close();
}catch (Exception exc){
System.out.println(exc);
}
}
}
![Page 27: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/27.jpg)
GCF (Generic Connection Framework) Exemplo: Conexão com Sockets
Socket Servidor import java.io.*;
import javax.microedition.io.*;
import javax.microedition.midlet.*;
public class SocketServidor extends MIDlet implements Runnable{
public SocketServidor() {}
public void destroyApp(boolean unconditional) {}
protected void pauseApp() {}
protected void startApp(){
Thread t = new Thread(this);
t.start();
}
public void run() {
try {
ServerSocketConnection conexaoServer = (ServerSocketConnection)Connector.open("socket://:5000");
SocketConnection conexao = (SocketConnection)conexaoServer.acceptAndOpen();
System.out.println("SERVIDOR: Conexão aceita");
OutputStream OS = conexao.openOutputStream();
String message = "SERVIDOR: Hello Cliente! Vamos testar a comunicação!";
try {
OS.write(message.getBytes());
OS.write("\r\n".getBytes());
System.out.println("SERVIDOR: Mensagem enviada");
} catch (Exception exc) {
System.out.println(exc);
}
OS.close();
conexao.close();
conexaoServer.close();
} catch (Exception exc) {
System.out.println(exc);
}
}
}
![Page 28: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/28.jpg)
Tópicos Avançados
Framework Marge (conectividade com bluetooth) ◦ https://marge.dev.java.net/
Framework Floogy (persistência de dados) ◦ floggy.sourceforge.net/
Web Service (manipulação de XML)
Mobile Media API (controle de recursos multimídia)
Wireless Messaging API (SMS)
API para desenvolvimento de jogos (GameCanvas)
Location API (posicionamento global / GPS)
![Page 29: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/29.jpg)
Exemplo de Aplicações
![Page 30: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/30.jpg)
Placar Eletrônico para Partida de Tênis
Sistema que utiliza comunicação sem fio para que o árbitro registre e
controle o andamento da partida a distância
Aplicação desenvolvida no LEC (Laboratório de Experiências Computacionais). Laboratório vinculado aos Cursos de Ciência da Computação e
Sistemas de Informação da URI – Campus Santo Ângelo-RS
Desenvolvedores: Professores Denilson R. Silva e Luciano L. Caimi
Bolsistas: Anderson A. Parreiras e Tales Marchesan
Principais componentes do sistema:
![Page 31: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/31.jpg)
Placar Eletrônico para Partida de Tênis
Característica e Recursos
Aplicação de controle instalada no PDA
o Java Micro Edition (MIDP 2.0 e CLDC 1.1)
Aplicação Servidora (Desktop)
o Plataforma Java padrão para Desktop (JDK 1.5)
Utilizando sockets, o programa cria um canal de comunicação com a aplicação servidora através da interface Wi-Fi
PDA Zire 71 com cartão Wi-Fi
AP (Acess Point ) Dlink DWL2000AP+ configurado com criptografia WEP 104 bits
Computador Dell Vostro 200 com placa de vídeo GForce2 5200
TV de Plasma 42 polegadas
![Page 32: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/32.jpg)
Placar Eletrônico para Partida de Tênis
![Page 33: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/33.jpg)
O sistema de Acompanhamento Acadêmico para Dispositivos Móveis CLDC
URI Mobile
Os principais requisitos do sistema é acessar, buscar, persistir e visualizar informações acadêmicas como: ◦ disciplinas, curso, frequência, avaliações, datas especiais, etc.
Possibilidade de persistência das informações para consultas “off-line” nos dispositivos
Fonte (vargas, 2007)
SISTEMA DE ACOMPANHAMENTO ACADÊMICO PARA DISPOSITIVOS MÓVEIS CLDC – URI MOBILE
Trabalho de Conclusão de Curso – Ciência da Computação / URI – Santo Ângelo
Aluno: Moacir José de Vargas
Orientador: Denilson Rodrigues da Silva
![Page 34: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/34.jpg)
O sistema de Acompanhamento Acadêmico para Dispositivos Móveis CLDC
Arquitetura do URI Mobile
Integrar tecnologias heterogêneas, através do uso de web service
Portal do aluno da URI, desenvolvido em Microsoft .NET, para acesso utilizando PCs
Disponibilização de dados à uma aplicação desenvolvida em linguagem Java, utilizando o Java ME
![Page 35: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/35.jpg)
O sistema de Acompanhamento Acadêmico para Dispositivos Móveis CLDC
URI Mobile – Pacotes, Classes e Interfaces
![Page 36: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/36.jpg)
String DadosWS_SOAP () – Método que gera o XML dinamicamente realiza a conexão enviando estes dados, recebe os e fecha a conexão. Parte do Código deste método, responsável por gerar o XML, e abrir a conexão, pode ser visto na a seguir.
O sistema de Acompanhamento Acadêmico para Dispositivos Móveis CLDC
URI Mobile – Classe SendData - Exemplo de envio de informações
![Page 37: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/37.jpg)
Gênius Bluetooth
Gênius (Simon): brinquedo popular nos anos 80
◦ Lógica baseada na memorização de cores sequenciais
Recursos utilizados:
◦ Interface gráfica baixo nível baseada em Canvas
◦ Conexão bluetooth (Framework Marge)
◦ Uso de Threads
![Page 38: CONECTIVIDADE - FACOMbacala/CM/CONECTIVIDADE.pdf · Java para Dispositivos Móveis - Desenvolvendo aplicações com J2ME por Thienne M. Johnson ; Novatec Editora LTDA; ISBN: 978-85-7522-143-3](https://reader033.vdocuments.net/reader033/viewer/2022050215/5f6168e559100344bf416529/html5/thumbnails/38.jpg)
Gênius Bluetooth