Paolo Cemim Rogério Vieira

Slides:



Advertisements
Apresentações semelhantes
Soluções elegantes para problemas recorrentes
Advertisements

Instalação e Configuração
Engenharia Informática Programação I & Estruturas de Dados e Algoritmos 2001/ Capitulo 3 – Introdução às classes Capitulo 3 Introdução às classes.
Bruno Borba Demetrio Carrión
Bluetooth e suas aplicações
Web Services Passo a passo Consumo de serviço SOAP em Java 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.
BD em.NET: Passo a passo conexão com SQL Server 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.
Sistema para Criação e Testes de Modelos Formais
Excel Profa. Cristina M. Nunes.
PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena
Orientação a Objetos: Encapsulamento e Classificação
Java: Pacotes e Modificadores de Visibilidade
Java: Pacotes e Modificadores de Visibilidade
Orientação a Objetos: Encapsulamento e Classificação
Introdução à Informática
Chapter 4: Threads.
DIAGRAMA DE ATIVIDADES
April 05 Prof. Ismael H. F. Santos - 1 Modulo II CheckStyle Professor Ismael H F Santos –
Maria Aparecida Castro Livi
Descrição de hardware em SystemC
Sistemas Operacionais
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Simple Network Management Protocol (SNMP)
Aula 6 Subprogramas Universidade do Vale do Rio dos Sinos
GERENCIAMENTO DE REDES
GERENCIAMENTO DE REDES
Documentação da Neptus Framework
1 Felipe L. SeverinoPOD XtremWeb Felipe L. Severino Programação com Objetos Distribuídos paralela e.
Classes e objetos Arrays e Sobrecarga
Classes e objetos Modelagem
Classes e objetos P. O. O. Prof. Grace.
Introdução a Programação JAVA
Tecnologias para Internet
Aula 01 – Apresentação e introdução html
B ANCO DE D ADOS E JDBC Profa. Msc. Cintia Carvalho Oliveira Mestre em Ciência da Computação – UFU Bacharel em Ciência da Computação - UFJF 1.
Conhecendo o Visual Studio.NET
Instalação e Configuração
Ministério da Saúde MÓDULO CAPTAÇÃO DO ATENDIMENTO SISRCA jul/2013
Desenvolvimento de Projetos e Aplicações Web
Hibernate com JPA Prática
Utilitários de Redes Prof. Andréa Chicri Torga Adaptações
Sistemas Operacionais
Aula 9 - Camada de aplicação
G ENERIC C ONNECTION F RAMEWORK Prof. André Assad
Introdução ao Desenvolvimento Web
SISTEMAS OPERACIONAIS
METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala 1.
Sistemas Operacionais
Módulo: Gerenciamento de Incidentes e
Juliano Maia Letícia Conte.  Surgiu para unir tecnologias como celular, headsets,...  1994: a empresa Ericson busca por uma tecnologia de transmissão.
GERENCIAMENTO DE REDES UTILIZANDO O PROTOCOLO SNMP
Java Avançado Luiz Carlos d´Oleron SJCP Java Sockets.
Configuração do Ambiente de Desenvolvimento
Prof. Alexandre Monteiro Recife
Clique para adicionar texto NetGamesNRT Leonardo de Souza Brasil Orientador: Ricardo Pereira e Silva, Dr.
Luiz Antonio Torres, Maio/2014
Stream – Fluxo I/O Sistema de Arquivos
Configuração do Ambiente de programação
Implementando comunicação em JAVA via Sockets Alcides Calsavara - Leonardo R. Nunes -
MINI CURSO J2ME Vinícius Maran SEMINÁRIO REGIONAL DE INFORMÁTICA 2008.
Bluetooth e MMAPI para a transmissão e manipulação de vídeo em dispositivos móveis Daniel Welfer
@2011 Éfren L. Souza1 Plataforma Android Uma Visão Geral para Desenvolvedores.
Redes Configurações e teste.
Ciclo de Seminarios Técnicos – PET Computação Quarta-Feira - 15/06/2011
Bruno Rezende Daniel Luiz Denis Leandro Thiago Paccelle Vânia Pereira.
JSR 82 - JavaTM APIs for Bluetooth: uma aplicação das bibliotecas BlueCove e Marge. II-UFRGS Programação com Objetos Distribuídos 2011/1 Gabriel Simões.
Bruno Rezende Daniel Luiz Denis Leandro Thiago Paccelle Vânia Pereira.
Componentes: ☺Artur Freitas ☺Marcos Eich ☺Rafael Hocevar
Seminários.reply Introdução a JavaME Guilherme Carvalho.
Projeto Marge Framework para Desenvolvimento de Aplicações Bluetooth em Java Bruno Ghisi Lucas Torri.
Transcrição da apresentação:

Paolo Cemim Rogério Vieira Framework Marge Paolo Cemim Rogério Vieira

Bluetooth – O que é? Especificação para comunicações sem fio Criado pela Ericsson Mobile Versão atual 2.1

Bluetooth – Características Substituição do uso de cabos Banda ISM (2.4GHz) Curta distância (1-100m) Baixo consumo de energia (>=1 mW) Baixo custo (>$5.00) Velocidade moderada (768K bit/sec) Utilizado em celulares, PDA’s, fones de ouvido, microfones, computadores, teclados, entre outros.

Bluetooth - Arquitetura Pilha de Protocolos Perfil define uma pilha de protocolo. A aplicação só pode se comunicar se estiver no mesmo perfil ou seja mesma pilha de protocolo.

Bluetooth – Como funciona a comunicação Inquiry: busca dos dispositivos na área Service Discovery: descoberta dos serviços providos pelo dispositivo (Transferência e Sincronização de dados, Dial-Up, ...) Connection: estabelecimento da conexão entre os dispositivos Communication: trocas de dados ou voz

JSR-82

JSR-82 – O que é? Java APIs para Bluetooth (JABWT). Especificação que padroniza um conjunto de APIs para permitir integração entre aplicações Java e Bluetooth. Liderada pela Motorola Iniciada em Out/00, liberada em Mar/02 (v 1.0) Final Release 2 em 2006 (v 1.1) Atualmente esta na Closed Maintenance Review 3 (v 1.1)

JSR-82 – Características Java ME como plataforma alvo Baseada no GCF (Generic Connection Framework), definido na CLDC 1.0 (Connected Limited Device Configuration) Separado em dois pacotes: javax.bluetooth – SDP, L2CAP, RFCOMM javax.obex – OBEX (opcional)

JSR-82 – Desktop Algumas implementações do GCF/JSR-82: AvetanaBluetooth (Linux) Bluecove 2.0.3 (Windows, Mac OS X e Linux)

JSR – 82 – Opinião dos Criadores do Framework Idealizada para Java ME (GCF) Difícil curva de aprendizado Códigos repetitivos Muitas constantes de controle Falta de clareza em alguns pontos

Projeto Framework Marge Desenvolvido por: Bruno Ghisi e Lucas Tossi

Marge – Dados Gerais do Projeto Objetivo: Facilitar o desenvolvimento Bluetooth em Java através do Framework e Aplicações de exemplo. Hospedado no portal java.net: http://marge.dev.java.net LGPL (Lesser General Public License): licença usual em bibliotecas

Marge – Dados Gerais do Projeto O nome Marge vem dos Simpsons. Onde a Marge tem um grande cabelo azul (eles fazem a analogia do cabelo azul(BLUE) com o BLUEtooth) e ela sempre está ajudando a sua família. E outra analogia que eles fazem é com o operando merge(mesclar) que é tem a idéia do projeto : um framework para uma aplicação e criar uma boa ferramenta para resolver problemas.

Marge - Framework marge-core Abstração do pacote javax.bluetooth Java ME e SE Versão 0.6

Marge – Como instalar O que é preciso? Java Development Kit (http://www.java.com/) NetBeans 6 IDE os mais novo com Mobility plugins (http://download.netbeans.org/) *Seleciona a versão completa para nada ser esquecido. Marge Framework (http://marge.dev.java.net) Para utilizar basta importar os jars do marge para o projeto.

Marge - Estrutura 24 classes 5 pacotes net.java.dev.marge.autocon net.java.dev.marge.communication net.java.dev.marge.communication.layer net.java.dev.marge.entity net.java.dev.marge.entity.config net.java.dev.marge.factory net.java.dev.marge.inquiry

Marge – Sem Marge x Com Marge (Busca) LocalDevice localDevice = LocalDevice.getLocalDevice(); DiscoveryAgent agent = localDevice.getDiscoveryAgent(); agent.startInquiry(DiscoveryAgent.GIAC, new DiscoveryListenerImpl()); DeviceDiscoverer.getInstance(). startInquiryGIAC( new InquiryListenerImpl()); É necessário implementar um DiscoveryListener que contêm trechos de código longos e repetitivos. Cada status de retorno da busca deve ser previamente conhecidos para que possam ser tratados. ● Classe específica para busca de dispositivos ● InquiryListener contém métodos que são notificados conforme o status de retorno, através da sua implementação padrão

Marge – Sem Marge x Com Marge (Serviço) LocalDevice localDevice = LocalDevice.getLocalDevice(); DiscoveryAgent agent = localDevice.getDiscoveryAgent(); int transactionID = agent. searchServices( attrSet, uuidArray, rmtDevice, new DiscoveryListenerImpl()); ServiceDiscoverer.getInstance() .startSearch(remoteDevice, new ServiceSearchListenerImpl()); Classe específica para busca de serviços ServiceSearchListener contém métodos para erros na busca e busca finalizada ServiceDiscoverer permite cancelar a busca diretamente, sem a necessidade de guardar o ID de transação Mesma interface do processo de Inquiry para notificação dos resultados

Marge – Sem Marge x Com Marge (Servidor) CommunicationFactory factory =new RFCOMMCommunicationFactory(); ServerConfiguration sconf =new ServerConfiguration(new CommunicationListenerImpl()); factory.waitClients(sconf, new ConnectionListenerImpl()); StreamConnectionNotifier notifier = (StreamConnectionNotifier) Connector.open( "btspp://localhost:” + ”10203040607040A1B1C1DE100;” + ”name=Server1;” + ”authenticate=false; authorize=false"); StreamConnection connection = notifier.acceptAndOpen(); ConnectionListener contém métodos para notificar uma conexão estabelecida ou erros Novos clientes são tratados e notificados automaticamente Servidor configurável Utilização de diferentes protocolos através das fábricas disponíveis É necessário saber a URL de serviço e seus parâmetros Controle de número de clientes é feito manualmente

Marge – Sem Marge x Com Marge (Cliente) CommunicationFactory factory = new L2CAPCommunicationFactory(); ClientConfiguration cconfig = new ClientConfiguration(serviceRecordFound, new CommunicationListenerImpl()); ClientDevice clientDevice = factory.connectToServer(cconf); String url = serviceRecord.getConnectionURL( ServiceRecord .NOAUTHENTICATE_NOENCRYPT, true); StreamConnection connection = (StreamConnection) Connector.open(url); Cliente configurável Utilização de diferentes protocolos através das fábricas disponíveis ● É necessário tratar diretamente com a parte de IO

Marge – Sem Marge x Com Marge (Comunicação) DataOutputStream dataout = connection .openDataOutputStream(); dataout.writeUTF(”Hello world”); dataout.flush(); connection.close(); device.startListening(); device.send("Hello world".getBytes()); device.close(); Controle automático do recebimento de mensagens, onde as mensagens recebidas são notificadas através do método receiveMessage do Listener enviado na configuração Facilidade no envio de mensagens Controle de escuta É necessário ter um controle em paralelo para o recebimento de mensagens

Marge - AutoConnect Cria servidor: AutoConnect.createServer("MargeBluechatServer", new CommunicationListenerImpl(),new ConnectionListenerImpl() ); Cria cliente: ClientDevice device = AutoConnect.createClient("MargeBluechatServer",new CommunicationListenerImpl());

Marge – Breve Comentário Se não quizer programar a parte de inquiry e search process, podesse usar o AutoConnect. Mas deve se ter certeza que onde for executado a sua aplicação não tenham muitos aparelhos bluetooth que poderiam se conectar à você, caso contrário pode demorar para ter resposta de retorno ou se conectar ao dispositivo errado.É uma boa função mas não funciona em determinados dispositivos por alguns problemas de implementação. Mas vale a pena testar.

Marge - Vantagens Maior abstração da JSR-82 fornecendo um código comum entre aplicações, evitando reescrita. Estruturas separadas para Inquiry e Service Discoverer provêem notificações conforme status de retorno. Rápida criação e configuração de Clientes e Servidores através das fábricas de protocolo. Fácil envio e recebimento de mensagens e extensível para novos protocolos e comportamentos (Layers).

Referencias https://marge.dev.java.net http://jcp.org/en/jsr/detail?id=82 http://projetos.inf.ufsc.br/arquivos_projetos/projeto_555/tcc-brunoghisi-marge.pdf