• Nenhum resultado encontrado

BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO APLICADA A CAMPANHAS PUBLICITÁRIAS

N/A
N/A
Protected

Academic year: 2022

Share "BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO APLICADA A CAMPANHAS PUBLICITÁRIAS"

Copied!
54
0
0

Texto

(1)

RILDO DOS SANTOS GONÇALVES

BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO APLICADA A CAMPANHAS PUBLICITÁRIAS

Itatiba

2010

(2)

RILDO DOS SANTOS GONÇALVES - 002200600599

BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO APLICADA A CAMPANHAS PUBLICITÁRIAS

Monografia apresentada à disciplina Trabalho de Conclusão de Curso, do curso de Engenharia de Computação da Universidade São Francisco, como exigência para conclusão do curso de graduação.

Orientador: Prof. Marcelo Augusto Gonçalves Bardi

Itatiba

2010

(3)

GONÇALVES, Rildo dos Santos. BLUETOOTH COMO ESTRUTURA DE

COMUNICAÇÃO APLICADA A CAMPANHAS PUBLICITÁRIAS

Monografia defendida e aprovada em 09 de Dezembro de 2010.

(4)

Dedico este trabalho aos meus pais, Benedito Gonçalves e Dalva A. dos Santos Gonçalves e aos meus amigos da universidade por estarem ao meu lado em horas tão difíceis e ao mesmo tempo tão gratificantes.

(5)

AGRADECIMENTOS

Agradeço a realização deste trabalho a minha família por me darem o suporte necessário até aqui. Eu integro a minha família natural, meus queridos amigos da universidade que por incontáveis vezes me incentivaram a continuar quando eu pensava em desistir.

Agradeço também ao meu orientador, Marcelo Augusto Gonçalves Bardi, por persistir e acreditar na elaboração desse trabalho. Obrigado.

(6)

“Não preciso de modelos, não preciso de heróis. Eu tenho meus amigos...”

(Renato Russo)

(7)

RESUMO

Bluetooth é uma tecnologia de comunicação por rádio de baixa freqüência e baixo alcance, desenvolvida para efetuar troca de dados sem fio a curtas distâncias. Essa tecnologia possibilita conectar dispositivos que estão próximos facilmente, simplificando tarefas do dia a dia que até então necessitavam da passagem de cabos pelo meio da sala para interligar os dispositivos utilizados. Atualmente, a grande maioria de aparelhos celulares traz o Bluetooth integrado. O Bluetooth nasceu da união de cinco empresas da área de tecnologia que buscavam uma solução para conectar equipamentos móveis e que não gastasse muita energia para economizar as baterias desses equipamentos. Hoje, várias companhias integram o SIG, sigla em inglês para Grupo Especial de Interesse Bluetooth. Outra tecnologia que abrange a grande maioria de dispositivos móveis é a linguagem de programação Java. O Java foi desenvolvido, inicialmente, para rodar em tudo que tivesse um microprocessador, mas explodiu mesmo com o surgimento da World Wide Web, onde foi utilizado para criar páginas de conteúdo dinâmico. A partir de então, o Java começou a ser utilizado também em dispositivos móveis, aparelhos receptores de sinal de TV Digital, para construção de jogos e muito mais. Boa parte desse sucesso se deve a importante característica do Java de não depender da plataforma onde irá executar, desde que exista uma máquina virtual Java para essa plataforma. Dada a grande importância dos dispositivos móveis existentes hoje, esse trabalho vem agregar essas duas tecnologias em um aplicativo que possibilite a distribuição de material de propaganda e de informação a usuários que tenham celulares ou smartphones para que sejam utilizados para visualizar esse conteúdo e que ainda, possam interagir com a aplicação no intuito de fazer pesquisas ou obter informações específicas sobre produtos.

Palavras-chave: Bluetooth; Java ME; Java SE; Linux.

(8)

ABSTRACT

Bluetooth is a radio communications technology of low frequency and low range, designed to exchange data wireless over short distances. This technology allows connecting devices that are coming easily, simplifying the daily tasks that until now required the passage of cables through the middle of the room to connect the devices. Currently, the vast majority of mobile devices brings the Bluetooth communication integrated. Bluetooth was born for five technology companies that was seeking a solution for connecting mobile devices and do not spend much energy to conserve battery power such equipment. Today, several companies integrate Bluetooth SIG, abbreviation for Bluetooth Special Interest Group. Another technology that covers the vast majority of mobile devices is the Java programming language.

Java was developed initially to run on everything that had a microprocessor, but came to be known with the emergence of the World Wide Web, which was used to create dynamic content pages. Since then, Java was being used also in mobile devices, receiver devices Digital TV signal, to build games and more. Much of this success is due to the important characteristic of Java is independent of the platform where it will run, since there is a Java virtual machine for that platform. Given the importance of mobile devices available today, this work is to aggregate these two technologies in an application that enables the distribution of advertisement material and information to users who have smartphones or cell phones to be used to view such content and it also can interact with the application in order to do research or obtain information about specific products.

keywords: Bluetooth; Java ME; Java SE; Linux.

(9)

SUMÁRIO

1 INTRODUÇÃO ... 1

1.1 Objetivos ... 2

1.2 Estrutura do trabalho ... 2

2 ASPECTOS TEÓRICOS ... 3

2.1 Dispositivos Móveis ... 3

2.2 A Tecnologia Bluetooth ... 3

2.2.1 Arquitetura Bluetooth ... 4

2.2.2 Pilhas de protocolos do Bluetooth ... 5

2.3 JAVA ... 7

2.3.1 Java Standard Edition ... 10

2.3.2 Java Micro Edition ... 11

2.3.3 API Bluetooth Java ... 12

2.4 Linux ... 24

3 METODOLOGIA DE DESENVOLVIMENTO... 25

3.1 Ferramentas Utilizadas ... 25

3.2 Modelagem do Sistema ... 26

3.2.1 Descrição do Sistema ... 26

3.2.2 Funcionalidades e Diagramas de Casos de Uso ... 27

3.2.3 Diagramas de Seqüência ... 28

3.2.4 Diagramas de Classes ... 29

3.2.5 Protótipo das Telas do Aplicativo Servidor ... 30

3.2.6 Estruturação das Bases de Dados ... 32

3.3 Codificação do Aplicativo Cliente ... 33

3.4 Codificação do Aplicativo Servidor ... 36

4 Resultados e discussões ... 38

5 Conclusões ... 40

5.1 Sugestões de Trabalhos Futuros ... 40

6 REFERÊNCIAS BIBLIOGRÁFICAS... 41

(10)

LISTA DE SIGLAS

BCC – Bluetooth Control Center

BNEP – Bluetooth Network Encapsulation Protocol CDC – Connected Device Configuration

CLDC – Connected, Limited Device Configuration GPL – General Public License

HCI – Host Controller Interface

HID – Human Interface Device Protocol

IEEE – Institute of Electrical and Electronic Engineers IDE – Integrated Development Environment

IDE – Integrated Development Environment IP – Internet Protocol

JCP – Java Community Process JDK – Java Development Kit JRE – Java Runtime Environment JSR – Java Specification Request JVM – Java Virtual Machine

L2CAP – Logical Link Control and Adaptation Protocol OBEX – Object Exchange

PAN – Personal Area Network PPP – Point to Point Protocol

RFCOMM – Radio Frequency Communication RI – Reference Implementation

SDDB – Service Discovery Database SDP – Service Discovery Protocol SDK – Software Development Kit SIG – Special Interest Group TCK – Technology Compatibility Kit

TCS-BIN – Telephony Control Protocol Specification UUID – Universal Unique Identifier

UDP – User Datagram Protocol WAP – Wireless Access Protocol

(11)

Lista de Figuras

Figura 1 - Scatternet formada por duas piconets ... 4

Figura 2 - Camadas do Protocolo Bluetooth ... 6

Figura 3 - Processo de criação de um programa Java ... 9

Figura 4 - Plataforma Java ... 9

Figura 5 - Configurações e Perfis mais comuns ... 11

Figura 6 - SDDB e dois Registros de Serviços suportados ... 18

Figura 7 - Atributos em um ServiceRecord ... 18

Figura 8 - Dongle Bluetooth ... 25

Figura 9 - Visão geral das funcionalidades dos atores ... 27

Figura 10 - Funcionalidades do ator administrador ... 27

Figura 11 - Funcionalidades do ator usuário ... 28

Figura 12 - Diagrama de seqüência de consulta de produtos ... 28

Figura 13 - Diagrama de seqüência para enviar uma campanha ... 29

Figura 14 - Diagrama de classes aplicativo cliente ... 29

Figura 15 - Diagrama de classes do aplicativo servidor ... 30

Figura 16 - Tela de login ... 31

Figura 17 - Tela Principal ... 31

Figura 18 - Tela de produtos ... 32

Figura 19 - Aplicativo Cliente ... 34

Figura 20 - Telas diversas do aplicativo ... 35

Figura 21 - Procura de dispositivos ... 36

Figura 22 - Dispositivo encontrado ... 37

Figura 23 - Envio de uma mensagem publicitária ao usuário... 38

Figura 24 - Envio de uma solicitação de pesquisa ao servidor ... 39

(12)

Lista de Tabelas

Tabela 1 - Os perfis do Bluetooth ... 7

Tabela 2 - Kits de Desenvolvimento e suas Empresas ... 12

Tabela 3 - Modos de visibilidade do dispositivo Bluetooth ... 15

Tabela 4 - Classes de dispositivos Bluetooth ... 16

Tabela 5 - UUID referentes aos protocolos Bluetooth ... 19

Tabela 6 - UUID referentes aos Perfis Bluetooth ... 19

Tabela 7 - Casos de uso do ator administrador ... 27

Tabela 8 - Casos de uso do ator usuário ... 28

Tabela 9 - Estrutura Base de Dados ... 32

(13)

1 INTRODUÇÃO

Nos últimos anos, a sociedade tem vivenciado uma avalanche de dispositivos eletrônicos com as mais variadas funcionalidades, que vem contribuindo para tornar nossas vidas mais práticas e prazerosas. O maior expoente entre esses dispositivos é o celular, que já se tornou um companheiro inseparável na vida de muitas pessoas. Já existe até uma doença ligada a sua falta: a nomofobia, que é o medo do indivíduo de ficar incomunicável ou desconectado (FANTÁSTICO, 2010).

De acordo com estatísticas de outubro de 2010, no Brasil já existe mais celulares que habitantes (UOL, 20010) e os índices não param de crescer. Portanto, utilizar o celular como forma de negócio é cada vez mais comum.

Assim, investir em aplicativos para celulares e smartphones é investir em um mercado que está certamente aquecido e que continuará ainda a manter essa tendência por muito tempo. Considerando que empresas como a Apple® e a Google® estão investindo pesado em aplicativos para essas plataformas indica que esse mercado dará muitos frutos a programadores que tenham boas idéias para problemas do dia a dia e a usuários que contam com as facilidades proporcionadas.

O Bluetooth é uma tecnologia que vem sendo muito utilizada em dispositivos móveis e tem sido eficaz naquilo que se propõe: conectar equipamentos de diversos tipos e fabricantes facilmente e sem o uso de cabos e instalação de softwares específicos.

Java é uma linguagem de programação que também tem sido largamente usada para desenvolvimento de aplicativos para dispositivo de capacidade de processamento e armazenamento reduzidos como celulares.

O celular é o equipamento que mais freqüentemente utiliza aplicativos Java e também o que mais faz uso da comunicação por Bluetooth, seja para transferência de arquivos ou para escutar músicas com um fone de ouvido sem fios. Muitas funcionalidades ainda podem ser agregadas, facilitando cada vez mais o dia-a-dia das pessoas. Em face disso, esse projeto busca o desenvolvimento de um aplicativo que transforme o celular em um panfleto eletrônico que receba informações referentes ao ambiente em que se encontra.

Por traz do desenvolvimento desse aplicativo, está a oportunidade do estudo do desenvolvimento de softwares em Java utilizando Bluetooth como meio de comunicação nas plataformas Desktop e de dispositivos móveis.

(14)

1.1 Objetivos

Esse trabalho tem por objetivo a construção de um aplicativo que permita que um aparelho celular possa trocar informações de caráter promocional e informativo com um computador onde esteja instalado o processo servidor sendo executado sobre a plataforma GNU/Linux. As informações devem ser trocadas utilizando o Bluetooth como via de comunicação e o Java como linguagem de programação.

1.2 Estrutura do trabalho

O capítulo 2 – ASPECTOS TEÓRICOS – introduz as tecnologias Bluetooth e Java, aqui empregadas. As definem e traz seus históricos. Também é descrita a arquitetura dos dispositivos móveis e a forma como são classificados. Existe também uma breve descrição do Sistema Operacional empregado e o porquê de seu uso.

O capítulo 3 – METODOLOGIA DE DESENVOLVIMENTO – descreve as ferramentas para edição utilizadas, o sistema operacional usado e os Vendors-SDK que foram instalados. Também traz toda a documentação do desenvolvimento dos aplicativos e mostra os códigos comentados.

No capítulo 4 – RESULTADOS E DISCUSSÕES – é possível apreciar os testes efetuados nos protótipos criados assim como breve discussão acerca do desenvolvimento dos aplicativos.

O último capítulo – CONCLUSÕES – trata das conclusões sobre as ferramentas utilizadas e dos resultados atingidos. Ficam também disponíveis algumas sugestões de continuação desse trabalho.

(15)

2 ASPECTOS TEÓRICOS

Esse capítulo traz a contextualização das tecnologias utilizadas no desenvolvimento do trabalho. Além de descrever a tecnologia Bluetooth e Java, também fala da utilização da API Bluetooth Java, utilizada por todo o trabalho.

2.1 Dispositivos Móveis

Dispositivos móveis são equipamentos capazes de processar e armazenar dados assim como computadores pessoais, mas se diferenciam desses pelo seu tamanho e capacidade de mobilidade. Seu maior ícone é o celular está presente na vida de grande parte da população.

Pode ser ainda dividido quanto às características específicas dependendo da forma como é analisado, como será visto no capítulo sobre a linguagem Java.

2.2 A Tecnologia Bluetooth

Bluetooth é uma tecnologia de comunicação por rádio de baixa freqüência e de alcance entre 1 e 100 metros usado, principalmente, para interligar equipamentos eletrônicos e efetuar troca de dados a pequenas distâncias. Foi inicialmente desenvolvida como uma nova forma de conexão para dispositivos móveis e que aliasse baixo custo na integração com seus produtos e um baixo consumo de energia. A baixa potência de seus transmissores, apesar de limitar a distância pode aumentar a autonomia das baterias dos equipamentos portáteis (BRUCE &

GILSTER, 2002).

Originalmente criada pela empresa Ericsson® e desenvolvida em conjunto com a IBM®, Intel®, Nokia® e Toshiba®, a tecnologia propunha interligar telefones a outros dispositivos, como PDAs e fones de ouvido de forma sem fio. Essas empresas formaram a SIG, um consórcio que hoje conta com mais de 13 mil empresas (The Official Bluetooth Technology info Site, 2010).

O nome Bluetooth foi dado em homenagem a Harald Blaatand (Bluetooth) II (940 – 981), rei viking que unificou a Dinamarca e a Noruega (BRUCE & GILSTER, 2002).

A idéia inicial era apenas interligar equipamentos sem a necessidade de cabos, utilizando ondas de rádio e circuitos baratos que pudessem ser incorporados sem muito ônus.

Mas logo se tornou uma concorrente a redes WLans.

(16)

Em 1999 o consórcio Bluetooth emitiu um documento de 1500 páginas da versão 1.0 da nova tecnologia. Pouco depois, o IEEE, que também estudava a área de redes sem fio, adotou a especificação do padrão Bluetooth e começou a alterá-la, a qual difere da padronização criada pelo SIG principalmente no que diz respeito ao foco dos estudos. O Bluetooth é um padrão completo, que vai desde a camada física até a camada de aplicação. O IEEE se compromete a padronizar apenas as camadas física e de enlace (TANENBAUM, 2003).

O padrão Bluetooth formalizado pelo IEEE está descrito dentro da pilha 802.15 de protocolos que formaliza as Pans. Isso não quer dizer que o SIG, como se conheceu, deixou de existir ou enfraqueceu, mas o que se espera é que futuramente os dois venham a se juntar em um único padrão.

2.2.1 Arquitetura Bluetooth

Uma rede Bluetooth se organiza conceitualmente por um nó mestre e até seis nós escravos ativos. Esses nós ficam em uma distância de até 10 metros, porém dependendo da potência da antena essa distância pode aumentar. Tal organização é denominada piconet.

Várias piconets podem coexistir dentro de um mesmo ambiente. Nesse caso, elas se interligam por um nó de ponte. Várias piconets interligadas são denominadas uma scatternet (TANENBAUM, 2003).

Mas uma piconet não se limita a sete membros conectados apenas. Podem fazer parte da mesma piconet ainda 255 nós inativos. São ditos estacionados e ficam em estado de baixa energia. Eles podem apenas responder a um sinal de ativação passado pelo nó mestre. Com isso eles são ativados e tomam o lugar de algum outro nó ativo anteriormente (TANENBAUM, 2003).

A seguinte imagem exibe duas piconets, A e B, formando uma scatternet:

Figura 1 - Scatternet formada por duas piconets

(17)

O motivo para que seja utilizada a arquitetura tipo mestre/escravo é que seus arquitetos pretendiam disponibilizar circuitos Bluetooth por menos de cinco dólares (TANENBAUM, 2003).

2.2.2 Pilhas de protocolos do Bluetooth

Como descrevem Hopkins e Antony (2003), a pilha de protocolos Bluetooth é o agente de controle que atua sobre o dispositivo Bluetooth. Ela pode estar na forma de software, firmware, hardware ou um misto dos três. A pilha de protocolos permite a comunicação com outros dispositivos Bluetooth e também a comunicação com o próprio dispositivo. Os protocolos se dividem entre camadas e perfis.

A seguir estão descritas as camadas e o modo que elas agem conforme descrito por Hopkins e Antony (2003) e a Figura 2 exibe como elas estão organizadas:

 A Interface de Controle do Nó (HCI) é a camada que entrega os dados diretamente para o dispositivo Bluetooth. Por ela trafega tudo a ser recebido ou enviado (voz e dados).

 O Protocolo de Adaptação e Controle do Link, também chamado de L2CAP, faz o empacotamento de segmentos de dados antes de serem enviados e remonta os pacotes entrantes tal como um protocolo multiplexador. Se for detectado um segmento de dados muito grande, esse protocolo quebra-o em pedaços menores para o envio. Cuida apenas de dados, pois o áudio tem acesso direto à camada HCI.

 O Protocolo de Descoberta de Serviço (SDP) é usado para descobrir os serviços que cada dispositivo Bluetooth oferece. Os serviços devem ser publicados para que outros dispositivos o conheçam. Um bom exemplo de serviço oferecido é dado por uma impressora. Ela oferece o serviço de impressão de documentos. A descoberta de serviços será mais bem tratada em capítulo posterior.

 RFCOMM é uma porta de comunicação serial. Por ser Wireless é conhecida como Porta de Comunicação por Rádio Freqüência e é capaz de simular uma porta serial comum.

 A camada de Especificação do Protocolo de Controle de Telefonia (TCS-BIN) é usada para envio de sinais de controle ao dispositivo quando algum aplicativo utiliza áudio, como uma chamada telefônica com uso de fones de ouvido sem fio.

(18)

 O Protocolo de Acesso sem Fio (WAP) é utilizado para conexão de internet.

Foi um protocolo adotado pelo SIG para suprir necessidades do Bluetooth e requer que os protocolos PPP, IP e UDP estejam presentes.

OBEX é o protocolo usado para transferência de arquivos entre dispositivos Bluetooth. Foi inicialmente desenvolvido para ser utilizado na comunicação Infra-Vermelho e, assim como o Protocolo de Acesso sem Fio foi adotado para ser utilizado no Bluetooth.

 O Protocolo de Encapsulamento de Redes Bluetooth (BNEP) possibilita transmitir outros protocolos de rede por meio do Bluetooth.

 Finalmente, o Protocolo de Dispositivo de Interface Humana (HID) lista as regras para transmissão de informações de dispositivos como teclados e mouse.

2.2.2.1 Perfis da Pilha de Protocolos Bluetooth

Normalmente, o arquiteto da aplicação utiliza a estrutura dos protocolos de rede e tenta descobrir como utilizá-los para servir ao propósito de seu aplicativo. O protocolo em si não dá pistas de como e para qual propósito deve ser utilizado. Diferentemente disso, o padrão Bluetooth em sua versão 1.1 identificava 13 tipos de aplicações diferentes que poderiam ser usadas pelos projetistas. Para se comunicar, os dispositivos deveriam implementar as mesmas

Figura 2 - Camadas do Protocolo Bluetooth

(19)

funcionalidades. Os chamados perfis, listados na tabela abaixo mostram bem quais eram as idéias principais do consórcio Bluetooth.

Nome Descrição

Acesso genérico Procedimento de gerenciamento de enlaces Descoberta de serviço Protocolo para descobrir serviços oferecidos Porta serial Substitui um cabo de porta serial

Intercâmbio genérico de objetos Define o relacionamento cliente/servidor para movimentação de objetos

Acesso de LAN Protocolo entre um computador móvel e uma LAN fixa Rede dial-up Permite que um notebook se conecte através de um celular Fax Permite que um equipamento de faz móvel se comunique com

um telefone móvel

Telefonia sem fio Conecta um aparelho telefônico à sua estação-base local Intercomunicador Intercomunicação digital

Fone de ouvido Permite a comunicação de voz sem o uso das mãos Push de objetos Fornece um meio para intercambiar objetos simples

Transferência de arquivos Fornece um recurso mais geral de transferência de arquivos Sincronização Permite sincronizar um PDA com outro computador.

A base para todos os outros perfis está no perfil de acesso genérico e junto com o perfil de descoberta de serviço, que tenta descobrir quais os serviços disponíveis em outros aparelhos, forma a base do Bluetooth e todos os aparelhos devem utilizar, pelo menos, esses dois perfis.

O perfil de porta serial é utilizado pela maioria dos outros perfis, pois programas que já utilizem a comunicação por portas seriais podem facilmente migrar para a rede sem fio Bluetooth. Interage diretamente com a camada RFCOMM.

2.3 JAVA

Java é uma linguagem de programação orientada a objetos que é compilada para um código intermediário, o Bytecode, que é processado por uma máquina virtual no momento da execução do programa. O Java tem como importante característica a não dependência da

Tabela 1 - Os perfis do Bluetooth

(20)

plataforma onde irá ser executada, desde que exista uma máquina virtual Java para essa plataforma. Têm sido muito utilizada em dispositivos de comunicação móveis, aparelhos receptores de sinal de TV digital, computadores e todo tipo de aparelhos que tenha um microprocessador.

Em 1991, a Sun Microsystems® financiou um projeto de pesquisa corporativa interna com o codinome Green, que deu origem ao desenvolvimento de uma linguagem de programação baseada em C++ batizada de Oak pelo seu criador James Gosling. Mais tarde, foi descoberto que esse nome já era usado para outra linguagem e em uma cafeteria local o nome Java (cidade de origem de um café importado) foi sugerido e aceito.

Inicialmente, o projeto Green previa uma linguagem de programação que rodasse em tudo que pudesse ter um microprocessador. O projeto passava por dificuldades, pois o mercado de equipamentos eletrônicos inteligentes, alvos da nova linguagem a ser desenvolvida, não estava se desenvolvendo tão rapidamente como era previsto e havia o risco do projeto ser cancelado. Nessa mesma época, a World Wide Web explodia e a Sun viu possibilidade de utilizar o Java para criar conteúdo dinâmico para páginas Web. Isso deu nova razão de existir ao Java(DEITEL, H.; DEITEL P., 2005).

Segundo Mary Campione e Kathy Walrath (2010) a linguagem de programação Java tem as seguintes características:

 Orientada a Objetos

 Simples

 Distribuída

 Multithread

 Dinâmica

 Portátil

 De Alto Desempenho

 Robusta

Segura

Para ser executado, um código Java escrito recebe a extensão .Java. O código é então compilado pelo compilador Javac. Um arquivo .class é criado e contém um código na

(21)

linguagem da Máquina Virtual chamado Bytecode. Ao ser executado uma nova instância da Máquina Virtual é lançada e traduz o código em Bytecodes para a linguagem nativa do sistema. É pela tradução do Byitecode em código nativo em tempo de execução que o arquivo .class pode ser executado em qualquer sistema nativo que tenha uma Máquina Virtual Java desenvolvida sem modificações (Mary Campione e Kathy Walrath, 2010).

A Figura 3 mostra o esquema de construção de um programa em Java:

JRE é um Kit que contém a máquina Virtual Java e bibliotecas utilizadas apenas para executar uma aplicação Java.

A plataforma Java é composta da Máquina Virtual e das APIs. As APIs são conjuntos de classes prontas para serem adicionadas ao projeto. APIs com características parecidas são agrupadas em bibliotecas e recebem o nome de pacotes. A Figura 4 exibe a integração entre máquina virtual e a API Java.

Conforme Jandl (2003) para escrever um programa Java são necessários um editor de textos ASCII e um Kit de desenvolvimento Java (JDK).

Figura 3 - Processo de criação de um programa Java

Figura 4 - Plataforma Java

(22)

Ao invés de se usar um editor de texto comum, existe a opção de utilizar um IDE (Ambiente de Desenvolvimento Integrado) para facilitar a digitação. O editor do IDE facilita a digitação do código-fonte e agilizando o processo.

O Java Deveolpment Kit é composto por:

 Um compilador para linguagem Java

 Uma máquina virtual

 Um programa para geração de documentação (Javadoc)

 Um utilitário para criar arquivos compactados Java Archive (jar)

 Uma extensa biblioteca de classes padronizadas Java

 Um ambiente de execução Java

Os Kits de desenvolvimento mais utilizados atualmente são os oferecidos pela Sun Microsystems e se dividem em:

Java SE – Java Standard Edition é utilizado para desenvolver a maioria dos aplicativos. É o padrão para se começar a desenvolver em Java.

Java EE – Java Enterprise Edition inclui um servidor de aplicativos, um servidor web, APIs específicas, suporte a Enterprise JavaBeans, Java Servlets APIs e suporte a tecnologia Java Server Pages (JSP).

Java ME – Utilizada para escrever aplicativos para plataformas com menor poder de processamento e memória, como é o caso de aplicativos para celulares e Set-up Boxes.

Java FX – Java FX Script Technology é uma linguagem que possibilita o desenvolvimento com alta produtividade de conteúdo para o ambiente Java.

Em seguida são descritos os Kits usados no desenvolvimento desse projeto.

2.3.1 Java Standard Edition

Java SE é composto das Bibliotecas necessárias para se executar um programa Java, da máquina virtual Java e ferramentas para se escrever programas Java, como compiladores e debugadores. É a base para desenvolver aplicativos Java e deve estar instalada mesmo que outro Kit seja utilizado.

Como descrito no site da Oracle (2010), atualmente o Java SE se encontra na versão 6.

(23)

2.3.2 Java Micro Edition

Conforme Knudsen e Li (2005), Java ME é o Kit da plataforma Java da Oracle utilizado para desenvolvimento de aplicativos para dispositivos de tamanho, processamento e quantidade de memória reduzidos tais como celulares, smartphones, pagers e set-up boxes.

O Java ME divide os dispositivos em três categorias: Configuração, Perfis e APIs opcionais.

A configuração dos aparelhos se baseia na capacidade de processamento e memória.

Há duas famílias de configuração: CDC e CLDC. Dispositivos classificados como CDC tem no mínimo 512 KB de memória de acesso somente de leitura (ROM), 256 KB de memória de acesso volátil (RAM), algum tipo de conexão de rede e devem aceitar uma versão completa da JVM. São representados por aparelhos GPS e set-up Boxes.

CLDC são aparelhos como menor poder de processamento e memória. Devem ter um mínimo de 160 KB de ROM

Os Perfis de dispositivos têm como base a configuração, mas classificam os dispositivos quanto a características mais específicas como se o aparelho possui display, qual seu método de armazenamento estático e quais os métodos de conexão, por exemplo. Além de configuração e perfil, podem ser disponibilizadas APIs específicas para cada dispositivo.

A Figura abaixo mostra algumas das configurações e perfis mais comuns.

Figura 5 - Configurações e Perfis mais comuns

(24)

2.3.3 API Bluetooth Java

Como descrito por Ropkins e Antony (2003), para se tornar um padrão Java aceito pela comunidade de desenvolvedores e empresas da área uma nova tecnologia deve passar por alguns processos de testes e certificações a fim de garantir sua aplicabilidade e eficiência. A JCP é uma comissão formada por empresas líderes do setor e por técnicos renomados que criam regras e testes para padronizar a tecnologia recém criada. JSR é um documento que contém as especificações dessa nova proposta de padronização. A JSR-82 faz parte da JCP que trata da API Bluetooth e é liderada pela Motorola tendo ajuda de mais dezessete empresas do setor e ainda auxílio individual de Peter Dawson, Steven Knudsen e Bread Threatt.

A comissão encarrega-se da criação de normas que norteiem a utilização da tecnologia, a Implementação de Referência (RI) e de um Kit para desenvolvimento (TCK).

Qualquer empresa que se baseie na JSR pode utilizá-la para criar seu próprio Kit de Desenvolvimento de Software (SDK). Existem muitas empresas que desenvolvem seu próprio SDK Java para Bluetooth e algumas estão listadas abaixo e uma versão atualizada dessa lista pode ser conseguida em www.JavaBluetooth.com.

Nome da empresa

Suporte a API Javax.Bluetooth

Suporte a API Javax.obex

Plataformas Java Suportadas

Sistemas Operacionais Suportados

Atinav Sim Sim Java Micro Edition,

Java Standart Edition

Win-32, Linux, Pocket PC

BlueCove Sim Sim Java Standart Edition Win-32, Mac OS X,

Linux, Pocket PC

Ericson Não Não Java Standart Edition Win-32, Linux

Esmertec Sim Não Java Micro Edition Win-32, Palm OS,

Pocket PC, outros

Harald Não Não Java Standart Edition Win-32, Linux, outros

Possio Sim Sim Java Micro Edition Win-32, Linux

Rococo Sim Sim Java Micro Edition,

Java Standart Edition

Win-32, Linux, Palm OS, Pocket PC Smart Network

Device

Sim Não Java Micro Edition HyNetOS

SuperWaba Não Não Waba JVM PalmOS

Zucotto Não Não Java Micro Edition,

Java Standart Edition

Win-32 Tabela 2 - Kits de Desenvolvimento e suas Empresas

(25)

Fazem parte dos aplicativos Java Bluetooth os seguintes componentes (Ropkins e Antony, 2003):

 Pilha de Inicialização

 Gerenciamento do dispositivo

 Descoberta de dispositivos

 Descoberta de Serviços

 Registro de Serviços

 Comunicação

A Central de Controle Bluetooth (BCC) define algumas configurações de segurança para o dispositivo Bluetooth. Más, apesar de estar presente na JSR-82 como sendo um item a ser implementado, não define como isso deve ser feito. Isso leva os fabricantes a construírem cada um seu próprio BCC, seja usando Java, seja usando uma linguagem nativa como C ou C++. Além disso, as funcionalidades definidas para cada BCC também podem variar.

Algumas funcionalidades descritas na JSR-82 são:

 Configurações básicas de segurança

 Mantém lista dos dispositivos já pareados (o dispositivo não precisa estar pareado naquele instante)

 Mantém lista dos dispositivos considerados seguros

 Contem mecanismo para pareamento de dispositivos

 Contem mecanismo para autorizar requisições de conexão

Suas configurações não devem ser modificadas a não ser por ele mesmo

2.3.3.1 Pilha de Inicialização

Para preparar o dispositivo para operar, a pilha de protocolos deve ser inicializada. A pilha é a última camada de contato com o hardware do dispositivo e o habilita para transferir os dados. Para isso é utilizada uma seqüência de comandos que podem variar em relação ao Kit de desenvolvimento utilizado. Alguns Kits já configuram a pilha de uma maneira padrão e não necessitam que o programador o faça.

(26)

2.3.3.2 Gerência do Dispositivo

Continuando com a descrição da API Java Bluetooth feita por Ropkins e Antony (2003) e baseando-se na API Java Standart edition, para se obter informações a respeito do dispositivo utilizado e dos dispositivos pareados foram criadas as classes LocalDevice e RemoteDevice. Essas classes fazem parte do Perfil de Acesso Genérico e é a partir delas que é obtido acesso às configurações dos dispositivos. A classe DeviceClass é utilizada para obter informações sobre como é classificada a configuração que o dispositivo próximos tem, como smartphones, celulares, computadores, pontos de acesso, etc.

Classe Javax.Bluetooth.LocalDevice:

Essa classe é usada para se obter informações e manipular o dispositivo Bluetooth em uso. Só é possível ter uma instância dela por Máquina Virtual (JVM) já que para cada dispositivo Bluetooth em funcionamento é lançada uma instância da JVM.

Para se instanciar um objeto apto a obter as informações do dispositivo é usado o método static getLocalDevice():

LocalDevice localdevice = LocalDevice.getLocalDevice().

Esse método pode lançar uma exceção do tipo BluetoothStateException se o dispositivo não estiver funcionando corretamente.

public String localDevice.getBluetoothAddress():

O método getBluetoothAddress() devolve o endereço Bluetooth do dispositivo. Esse endereço é constituído por uma string de 12 caracteres de números hexadecimais.

public boolean localDevice.setDiscoverable(int modo):

Habilita a opção de ficar visível para os outros dispositivos Bluetooth.

A tabela 3 exibe as opções para modo disponíveis:

(27)

Modo de Acesso

Nome Completo Descrição Valor

Inteiro

Valor Hexadecimal NOT_DISCO

VERABLE

Invisível Não permite que outros dispositivos o detecte

0 0

GIAC Código de acesso a pesquisa geral ou ilimitada

Permite deixar o dispositivo visível

10390323 0x9E8B00

LIAC Código de acesso a pesquisa limitada

Permite deixar o dispositivo visível pelo tempo de 1 minuto

10390272 0x9E8B33

public int localDevice.getDiscoverable():

Retorna os estado de visibilidade atual do dispositivo. As constantes NOT_DISCOVERABLE, GIAC OU LIAC são retornadas em forma de números inteiros.

Classe Javax.Bluetooth.RemoteDevice:

Oferece acesso a um único dispositivo que esteja próximo.

public final String getBluetoothAddress():

Esse método retorna o endereço do dispositivo.

public String getFriendlyName(boolean alwaysAsk):

Devolve um nome amigável do dispositivo remoto questionado.

Classe Javax.Bluetooth.DeviceClass:

Essa classe possui dois métodos usados para descobrir a qual classe o dispositivo questionado faz parte. Os métodos public int getMinorDeviceClass() e public int

Tabela 3 - Modos de visibilidade do dispositivo Bluetooth

(28)

getMajorDeviceClass() retornam um número inteiro que pode ser usado para descobrir a classe de dispositivos. A tabela 4 relaciona algumas dessas classes.

Classe Maior Classe Menor Descrição da Classe Maior Descrição da Classe Menor

256 4 Computer Desktop

256 12 Computer Notebook

256 20 Computer PDA

512 4 Celular Celular

512 12 Celular Smartphone

1024 8 Dispositivo de Audio Fone de ouvido

1280 64 Periféricos de Computador Teclado 1280 128 Periféricos de Computador Mouse

1536 32 Dispositivo de Imagem Câmera

1536 128 Dispositivo de Imagem Impressora

2.3.3.3 Descoberta de Dispositivos

Classe Javax.Bluetooth.DiscoveryAgent:

Essa classe é utilizada para descobrir os dispositivos que estão disponíveis ao redor.

O objeto localDevice instanciado para obter as propriedades do dispositivo local é utilizado também para instanciar um objeto que fará a busca por outros dispositivos:

LocalDevice localDevice = LocalDevice.getLocalDevice()

DiscoveryAgent discoveryAgent = localDevice.getDiscoveryAgent()

Essa classe possui dois métodos para efetuar a busca por dispositivos:

public boolean startInquiry(int codAcesso, DiscoveryListener listener):

Com esse método é possível iniciar uma pesquisa por dispositivos próximos. O codAcesso pode ser uma das três constantes: NOT_DISCOVERABLE, LIAC ou GIAC. Um objeto de uma classe que implementa a interface DiscoveryListener deve ser passado como

Tabela 4 - Classes de dispositivos Bluetooth

(29)

segundo parâmetro. Eventos são repassados a esse objeto à medida que novos dispositivos são encontrados.

public RemoteDevice[] retrieveDevice(int opcao):

Retorna uma lista de objetos do tipo RemoteDevice que possam ter sido encontrados pelo método startInquiry(). A variável opcao pode conter as constantes CACHED (0) ou PREKNOWN (1). CACHED pode ser um dispositivo encontrado em uma pesquisa recente, enquanto que PREKNOWN pode ser um dispositivo freqüentemente acessado.

Interface Javax.Bluetooth.DiscoveryListener:

Essa interface deve estar implementada na classe principal do aplicativo para que essa classe seja avisada quando um novo dispositivo for encontrado.

public void deviceDiscovered(RemoteDevice btDevice, DeviceClass code):

Esse método é chamado pela máquina virtual quando o método startInquiry() retorna um dispositivo encontrado. O RemoteDevice é uma referência ao dispositivo encontrado, enquanto que DeviceClass é o tipo de dispositivo encontrado referente a tabela 4.

2.3.3.4 Descoberta de Serviços

Com as instruções acima é possível instanciar o próprio dispositivo, procurar por dispositivos novos e instanciar os novos dispositivos. Mas para que seja possível executar alguma ação útil é necessário saber quais os tipos de serviço que cada dispositivo encontrado pode oferecer. Como exemplo, uma impressora encontrada tem o serviço de impressão registrado no seu SDDB. SDDB é um banco de dados de pequeno porte usado para armazenar os serviços de cada dispositivo.

Outra forma de encontrar o serviço disponibilizado por um dispositivo é consultar a classe de dispositivos da qual ele faz parte. Mas o serviço registrado no SDDB é mais específico do que os baseados apenas na classe de dispositivo, portanto mais utilizado.

No SDDB ficam armazenados os registros dos serviços que cada dispositivo pode executar na forma de um ServiceRecord.

(30)

Entradas em um ServiceRecord são chamadas de atributos e contêm um ID e um valor a ele atribuídos.

Os valores dos atributos chamados DataElements podem ser do tipo int, boolean, UUID ou uma enumeração.

Classe Javax.Bluetooth.UUID:

A classe UUID identifica os serviços possíveis da pilha de protocolos Bluetooth. Como exemplo, para enviar um arquivo por meio do perfil de entrega de objetos OBEX, deve-se efetuar a descoberta de serviços utilizando o UUID 0x1105 que é o UUID do OBEX. Abaixo a tabela 7 mostra os UUID de cada protocolo e a tabela 8 exibe alguns dos perfis mais utilizados. Utilizar um UUID de um protocolo ou de um perfil define a especificidade da ação desejada. Cabe lembrar que um perfil é sempre baseado em um protocolo Bluetooth e por isso é apenas mais específico em relação à ação a executar, mas continua usando o protocolo base.

Figura 6 - SDDB e dois Registros de Serviços suportados

Figura 7 - Atributos em um ServiceRecord

(31)

Protocolo UUID (Decimal) UUID (Hexadecimal)

SDP 1 0x0001

RFCOMM 3 0x0003

L2CAP 256 0x0100

HTTP 12 0x000C

FTP 10 0x000A

TCP 4 0x0004

IP 9 0x0009

UDP 2 0x0002

BNEP 15 0x000F

OBEX 8 0x0008

TCS-BIN 5 0x0005

Perfil Nome do Serviço

UUID (decimal)

UUID

(Hexadecimal) Porta Serial Porta Serial 4353 0x1101

Transferência de Objetos

OBEX 4357 0x1105

Acesso Genérico

HeadSet 4360 0x1108

Impressora Básica

Impressão 4386 0x1122 Dispositivos

de Interface Humana

Mouse, Teclado Bluetooth

4389 0x1125

Rede Genérica n/a 4609 0x1201

public UUID(long uuidValue):

Esse é o método construtor da classe UUID. Ele simplesmente depende de um valor do tipo long.

public UUID(String uuidValue, boolean shortUUID):

Já esse método permite construir um UUID apartir de uma String. Se shortUUID estiver setado como verdadeiro, o valor de retorno terá 16 bits ao invés de 128 como o normal. Não deve ser inserido o 0x de hexadecimal para se utilizar esse método.

Tabela 5 - UUID referentes aos protocolos Bluetooth

Tabela 6 - UUID referentes aos Perfis Bluetooth

(32)

Javax.Bluetooth.DiscoveryAgent:

Essa classe, já utilizada para prover a descoberta de dispositivos, também é usada para a descoberta de serviços. Os dois métodos seguintes são utilizados para descobrir os serviços disponíveis em dispositivos remotos.

public int searchServices(int[] attrSet, UUID[] uuidSet, RemoteDevice btDev, DiscoveryListener discListener):

Com esse método é possível procurar por uma lista de serviços disponíveis em um único dispositivo por vez. O parâmetro uuidSet do tipo UUID[] é uma lista dos serviços que se procura no dispositivo e já dever ter sido criada. Quando o dispositivo remoto sinaliza possuir um dos serviços relacionados na lista de serviços procurados a lista attrSet é preenchida com os atributos relacionados aos serviços que batem. O objeto btDev da classe RemoteDevice é uma referência ao dispositivo pesquisado. Também deve ser implementado um objeto que seja a interface da classe DiscoveryListener para que seja possível receber chamadas de eventos quando um serviço relacionado for encontrado.

public String selectService(UUID uuid, int security, boolean master):

Esse método é usado para procurar por um serviço específico em qualquer dispositivo disponível. Se houver algum serviço encontrado que bata com os solicitados, esse método retorna uma String que deve ser usada por Conector.open() que cria uma conexão com o dispositivo.

Interface Javax.Bluetooth.DiscoveryListener:

Essa interface também é utilizada para instanciar um objeto para fazer a busca por serviços e seus métodos principais são:

public void serviceDiscovered(int transID, ServiceRecord[] servRecord):

Esse é um método chamado pela JVM quando serviços procurados são encontrados no dispositivo remoto e o método DiscoveryAgent.searchServices() implementar a interface

(33)

DiscoveryListener. Com esse método pode-se obter um identificador da transação e uma lista do tipo ServiceRecord com os serviços oferecidos pelo dispositivo remoto. Com um ServiceRecord é possível conectar ao dispositivo e fazer uso desse serviço.

Classe Java.Bluetooth.ServiceRecord:

Essa é a classe usada para instanciar um objeto do tipo ServiceRecord que é usado como entrada na tabela SDDB e que especifica os serviços oferecidos pelo dispositivo.

Classe Java.Bluetooth.DataElement:

Cada ServiceRecord é formado por um conjunto de atributos da classe DataElement. Um DataElement pode ser formado apartir dos sequintes tipos:

 Inteiros

 Booleanos

 Strings

 UUIDs

 Seqüência dos tipos acima

2.3.3.5 Registro de Serviços

Para um dispositivo servidor poder oferecer um serviço, esse serviço deve antes ser publicado para, então, poder ser visto pelos clientes. Esse processo recebe o nome de Registro de Serviços.

Para que um serviço seja publicado no SDDB é necessário usar o método estático Connector.open() e fazer um cast com a classe StreamConnectionNotifier. O objeto StreamConnectionNotifier é passado para o método getRecord() da classe LocalDevice é então é obtido um objeto do tipo ServiceRecord. Para que o serviço possa ser visto pelos dispositivos Bluetooth, o método acceptAndOpen() da classe StreamConnectionNotifier é chamado e fica a espera dos dispositivos remotos. Quando o processo termina, é utilizado o método close() da classe StreamConnectionNotifier para encerrá-lo.

(34)

// criando os objetos utilizados

streamconnectionnotifier notifier = null;

streamconnection sconn = null;

localdevice localdevice = null;

servicerecord servicerecord = null;

// abrindo a conexão

// a string url já deve ter sido criada

notifier = (streamconnectionnotifier)connector.open(url);

// instanciar o objeto localdevice e obtendo o servicerecord localdevice = localdevice.getlocaldevice();

servicerecord = localdevice.getrecord(notifier);

// esse método bloqueia a thread até que algum dispositivo responda notifier.acceptandopen();

//o serviços está registrado no sddb

//esperar uma conexão.Quando o cliente terminar notifier.close()

2.3.3.6 Comunicação

Existem três modos para que dois dispositivos possam se comunicar. Os mais comuns são o protocolo RFCOMM e o protocolo L2CAP.

O protocolo RFCOMM é o mais usado. É fácil adaptá-lo em aplicativos que fazem uso da porta serial para comunicação via Bluetooth. Por utilizar comunicação serial na transmissão de dados é o mais indicado quando é necessário fazer troca de dados de modo contínuo, como por exemplo, transmissão de imagem.

Em uma comunicação usando o RFCOMM existe o conceito de seção e conexão. Uma seção é iniciada entre dois dispositivos comunicantes e podem ter uma ou mais conexões para realizar uma tarefa completa. Múltiplas seções só podem ocorrer com dispositivos diferentes.

(35)

Um dispositivo que vai agir como um servidor precisa basicamente usar o mesmo código do registro de serviços. A String url precisa ser iniciada com btspp://localhost:”

seguida de um número de 256 ou 128 bits no formato hexadecimal. Esse número precisa ser diferente de outro encontrado em outro dispositivo. Opcionalmente, é possível nomear esse serviço que está sendo criado com o seguinte comando: “name=serialconn” separado por um

“;” do resto da URL, em que serialconn é o nome do ServiceRecord.

// criando os objetos utilizados

StreamConnectionNotifier notifier = null;

StreamConnection con = null;

LocalDevice localdevice = null;

ServiceRecord servicerecord = null;

InputStream input;

OutputStream output;

//criando a URL que contém o UUID com pequena chance de conflito

String url = "btspp://localhost:00112233445566778899AABBCCDDEEFF;

name=serialconn";

// abrindo a conexão e efetuando um cast para StreamConnectionNotifier notifier = (StreamConnectionNotifier)Connector.open(url);

//bloqueando a thread até um acesso de um cliente con = notifier.acceptAndOpen();

// se houver resposta de algum cliente abrir os streams de dados input = con.openInputStream();

output = con.openOutputStream();

// agora é possível enviar e receber dados pelos streams

Para estabelecer uma conexão para o cliente recupera-se a URL com o método getConnectionURL() da classe ServiceRecord e abre a conexão com o método estático Connector.open() passando a url como seu parâmetro.

String connectionURL = serviceRecord.getConnectionURL(0, false);

StreamConnection con = (StreamConnection)Connector.open(connectionURL);

(36)

Para as conexões utilizando o protocolo L2CAP é necessário entender o conceito de MTU (Unidade Máxima de Transmissão). L2CAP utiliza a transmissão de dados em forma de pacotes.

O tamanho máximo que esses pacotes podem assumir deve ser negociado entre os dois dispositivos comunicantes e recebe o nome de MTU. O padrão é utilizar 672 bytes por pacote.

Para encontrar o MTU possível para o dispositivo local é utilizado o seguinte método:

LocalDevice local = LocalDevice.getLocalDevice();

String receiveMTUmax = local.getProperty("Bluetooth.l2cap.receiveMTU.max");

Para abrir uma conexão também são usados os métodos Connector.open() e acceptAndOpen() porém agora são usadas as classe L2CAPConnectionNotifier e L2CAPConnection.

L2CAPConnectionNotifier notifier = (L2CAPConnectionNotifier).Connector.open(url);

L2CAPConnection con = (L2CAPConnection)notifier.acceptAndOpen();

E esse é o código para conexão do cliente:

L2CAPConnection = (L2CAPConnection)Connector.open(url);

2.4 Linux

GNU/Linux, ou simplesmente Linux como é mais conhecido é um composto de softwares baseados na GPL que tem como kernel o Linux que formam um sistema operacional de ambiente moderno seguro e estável para desktops, servidores e sistemas embarcados. Trata-se de uma plataforma livre escrita por desenvolvedores ao redor do mundo e que pode ser usada e modificada por todos os interessados, desde que sigam as leis da GPL para isso.

(37)

3 METODOLOGIA DE DESENVOLVIMENTO

Esse capítulo oferece uma visão da seqüência de desenvolvimento do projeto e as ferramentas utilizadas, inclusive para que possa ser recriado o ambiente de desenvolvimento adotado.

3.1 Ferramentas Utilizadas

Para desenvolvimento desse trabalho foi utilizado como Sistema Operacional a distribuição GNU/Linux Ubuntu versão 10.04 e que foi atualizado para 10.10 assim que essa ficou disponível em outubro de 2010.

Foi instalado na máquina um dongle Bluetooth (antena Bluetooth) genérico facilmente encontrado nas lojas de informática. Esse dispositivo promete ter o alcance de no máximo 10 metros. A foto do dispositivo Bluetooth adquirido para o projeto pode ser vista na Figura 8. O Sistema Operacional instalou automaticamente os drivers para o novo dispositivo.

O Java instalado na máquina ao final do trabalho era a versão 6 update 22.

O banco de dados escolhido foi o MySQL Community Server versão 5.1.53 pois também é fornecido sob a licença GPL.

O IDE utilizado para desenvolvimento desse aplicativo foi o NetBeans 6.9.1. O plugin para Java Micro Edition também foi instalado pelo instalador do próprio IDE.

Para o desenvolvimento na plataforma Micro Edition também é necessário ter instalado um emulador para JME. No caso o Kit Emulador utilizado foi o Sun Java Wireless Toolkit da Oracle® na versão 2.5.2 para CLDC e que pode ser conseguido no site da Oracle®.

Figura 8 - Dongle Bluetooth

(38)

O Kit de desenvolvimento para a API Bluetooth a ser usado no desenvolvimento de aplicativos Java Standart Edition escolhido foi o BlueCove versão 2.1.0 por se tratar de um Kit que pode ser utilizado no sistema operacional Linux, além de ser gratuito. Para utilizar o BlueCove é necessário ter instalado o módulo que dá suporte ao BlueCove no Linux chamado BlueZ versão 4.80. Informações sobre o BlueCove e sobre o BlueZ podem ser conseguidas no site do projeto: bluecove.org.

Para teste do aplicativo cliente foi utilizado o celular Nokia® 5530 com o sistema operacional Symbian S60 5.0.

3.2 Modelagem do Sistema

O projeto almeja a construção de dois aplicativos, um cliente e um servidor. O cliente deve ser instalado em um dispositivo móvel como um celular ou smartphone. O aplicativo servidor deve ser instalado em um computador desktop.

3.2.1 Descrição do Sistema

Para que fique mais claro o que se pretende com a construção desse projeto, optou-se pela modelagem do sistema, a fim de facilitar o entendimento pelos leitores.

O servidor da aplicação se constitui por uma interface gráfica, onde o administrador do sistema pode inserir os dados e um processo servidor que fica rodando em segundo plano recebendo as requisições dos clientes. Os dados a serem inseridos são, no caso de produtos a venda: o nome do produto, preço e localização, por exemplo, e no caso de um campanha publicitária, o título e uma mensagem a ser enviada para os clientes, assim como, a data de início e fim que aquela campanha deve ser veiculada.

O processo servidor fica pronto a espera de uma requisição dos usuários. Ao receber uma requisição com o nome de um produto, por exemplo, o servidor pesquisa no banco de dados as características do produto e devolve para o cliente uma tabela com o nome daquele produto, sua marca, disponibilidade, localização, preço e produtos similares que possam interessar ao cliente. Esse processo servidor também consulta o ambiente de tempos em tempos para descobrir novos dispositivos passíveis de receberem o objeto da campanha, quer seja uma nota de texto, imagem ou outro objeto que se pretenda enviar.

Os dispositivos clientes também têm a função de cliente e servidor, uma vez que se comportam como clientes quando geram uma requisição de pesquisa ao servidor da aplicação,

(39)

e como servidor uma vez que estão ativos prontos a responderem a uma solicitação de conexão do servidor da aplicação.

As pessoas habilitadas para interagir com o sistema são, portanto, o administrador do sistema, ao qual caberá a tarefa de inserir os dados de produtos e campanha no sistema e os clientes que devem ter o aplicativo cliente instalado em um celular ou smartphone e, apartir dele, efetuar pesquisas e receber os resultados e campanhas publicitárias.Funcionalidades e Diagramas de Casos de Uso

A Figura 9 traz as funcionalidades do sistema e traduz o exposto anteriormente:

Funcionalidades do ator administrador:

Casos de uso do ator administrador:

Funcionalidade Nome da Funcionalidade Caso de Uso

1 Cadastra Campanha Cadastrar Campanha()

Consultar Campanha() Alterar Campanha() Excluir Campanha()

2 Cadastra Produto Cadastrar Produto()

Consultar Produto() Alterar Produto() Excluir Produto()

Figura 9 - Visão geral das funcionalidades dos atores

Figura 10 - Funcionalidades do ator administrador

Tabela 7 - Casos de uso do ator administrador

(40)

Funcionalidades do ator usuário:

Casos de uso do ator usuário

Funcionalidade Nome da Funcionalidade Caso de Uso

1 Ler Campanha Consultar Campanha()

2 Pesquisa Produto Pesquisar Produto()

Consultar Produto()

3.2.2 Diagramas de Seqüência

As Figuras 12 e 13 apresentam os diagramas de seqüência de algumas das ações mais importantes efetuadas pelos atores:

Figura 11 - Funcionalidades do ator usuário

Tabela 8 - Casos de uso do ator usuário

Figura 12 - Diagrama de seqüência de consulta de produtos

(41)

3.2.3 Diagramas de Classes

As Figuras 14 e 15 exibem as classes utilizadas para codificar o aplicativo servidor e o aplicativo cliente:

Figura 13 - Diagrama de seqüência para enviar uma campanha

Figura 14 - Diagrama de classes aplicativo cliente

(42)

3.2.4 Protótipo das Telas do Aplicativo Servidor

A interface do protótipo do aplicativo se resume a três telas quem contêm as seguinte funcionalidades:

login – para obter acesso ao sistema;

Principal – onde o administrador pode inserir e modificar as campanhas e conFigurar os dias que estarão disponíveis;

Produtos – onde se tem acesso às atividades relacionadas aos produtos, como inserir e editar os produtos.

Figura 15 - Diagrama de classes do aplicativo servidor

(43)

Figura 16 - Tela de login

Figura 17 - Tela Principal

(44)

3.2.5 Estruturação das Bases de Dados

A estrutura das bases de dados utilizadas é a seguinte:

Figura 18 - Tela de produtos

Tabela 9 - Estrutura Base de Dados

(45)

3.3 Codificação do Aplicativo Cliente

O sistema Cliente começou a ser codificado pela parte gráfica.

Em JME, para se exibir objetos na tela é necessário instanciar um objeto do tipo Display e passar um objeto do tipo Displayable para ele. O objeto utilizado no aplicativo foi um Form, que é um objeto que pode receber uma maior quantidade de itens a serem exibidos.

Outro objeto do tipo Displayable poderia ser um TextBox ou um objeto do tipo Scream utilizado para construir interfaces de jogos. O objeto Displayable depois de instanciado deve ser setado como corrente, isto é, ele que deve ser exibido na tela, no método startApp() da classe.

public class Cliente extends MIDlet implements CommandListener { private Display display = null;

private Form formPesquisa = null;

public Cliente() {

display = Display.getDisplay(this);

formPesquisa = new Form("Pesquisa");

}

protected void startApp() throws MIDletStateChangeException { display.setCurrent(formPesquisa);

} }

No construtor da classe, além de instanciar o objeto Display e o Displayable deve-se construir todos os objetos que vão ser exibidos.

Usando o emulador do Wireless Toolkit da Oracle a apresentação do aplicativo ficou como pode-se ver na Figura 19:

(46)

Figura 19 - Aplicativo Cliente

(47)

Figura 20 - Telas diversas do aplicativo

(48)

3.4 Codificação do Aplicativo Servidor

Para o servidor, inicialmente foi feito a codificação da descoberta de dispositivos e serviços usando o Bluetooth.

O código escrito até o momento é capaz de fazer a busca por dispositivos Bluetooth próximos e reconhecer sua classe, seu endereço e seu nome, e pesquisar os serviços disponíveis.

A Figura 21 e 22 exibem a pesquisa de novos dispositivos.

Figura 21 - Procura de dispositivos

Referências

Documentos relacionados

Os resultados mais significativos foram alcançados para o controle de emissão e menor perda de carga usando membrana ePTFE, com um retorno de produtividade de 10% no

da quem praticasse tais assaltos às igrejas e mosteiros ou outros bens da Igreja, 29 medida que foi igualmente ineficaz, como decorre das deliberações tomadas por D. João I, quan-

Portanto, mesmo percebendo a presença da música em diferentes situações no ambiente de educação infantil, percebe-se que as atividades relacionadas ao fazer musical ainda são

Excluindo as operações de Santos, os demais terminais da Ultracargo apresentaram EBITDA de R$ 15 milhões, redução de 30% e 40% em relação ao 4T14 e ao 3T15,

esta espécie foi encontrada em borda de mata ciliar, savana graminosa, savana parque e área de transição mata ciliar e savana.. Observações: Esta espécie ocorre

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

limitações no uso do sistema de informação; isolamento do Serviço de Atenção Domiciliar em relação aos demais serviços da rede de saúde; limitações da Atenção Básica

ed è una delle cause della permanente ostilità contro il potere da parte dell’opinione pubblica. 2) Oggi non basta più il semplice decentramento amministrativo.