BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO...

54
UNIVERSIDADE SÃO FRANCISCO Curso de Engenharia de Computação RILDO DOS SANTOS GONÇALVES BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO APLICADA A CAMPANHAS PUBLICITÁRIAS Itatiba 2010

Transcript of BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO...

Page 1: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

UNIVERSIDADE SÃO FRANCISCO

Curso de Engenharia de Computação

RILDO DOS SANTOS GONÇALVES

BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO

APLICADA A CAMPANHAS PUBLICITÁRIAS

Itatiba

2010

Page 2: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

i

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

Page 3: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

ii

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.

Page 4: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

iii

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.

Page 5: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

iv

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.

Page 6: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

v

“Não preciso de modelos, não preciso de heróis. Eu

tenho meus amigos...”

(Renato Russo)

Page 7: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

vi

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.

Page 8: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

vii

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.

Page 9: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

viii

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

Page 10: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

ix

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

Page 11: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

x

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

Page 12: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

xi

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

Page 13: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

1

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.

Page 14: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

2

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.

Page 15: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

3

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.

Page 16: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

4

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

Page 17: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

5

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.

Page 18: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

6

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

Page 19: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

7

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

Page 20: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

8

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

Page 21: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

9

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

Page 22: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

10

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.

Page 23: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

11

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

Page 24: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

12

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

Page 25: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

13

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.

Page 26: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

14

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:

Page 27: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

15

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

Page 28: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

16

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

Page 29: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

17

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.

Page 30: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

18

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

Page 31: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

19

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

Page 32: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

20

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

Page 33: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

21

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.

Page 34: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

22

// 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.

Page 35: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

23

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);

Page 36: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

24

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.

Page 37: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

25

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

Page 38: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

26

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,

Page 39: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

27

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

Page 40: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

28

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

Page 41: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

29

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

Page 42: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

30

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

Page 43: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

31

Figura 16 - Tela de login

Figura 17 - Tela Principal

Page 44: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

32

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

Page 45: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

33

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:

Page 46: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

34

Figura 19 - Aplicativo Cliente

Page 47: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

35

A Figura 20 exibe mais algumas telas do aplicativo:

Figura 20 - Telas diversas do aplicativo

Page 48: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

36

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

Page 49: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

37

Apesar de ambos os sistemas, Cliente e Servidor, não terem obtido êxito na sua

finalização os problemas a serem sanados demandam apenas tempo e prática na aplicação da

linguagem Java podendo ser finalizados ainda.

Figura 22 - Dispositivo encontrado

Page 50: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

38

4 RESULTADOS E DISCUSSÕES

Finalizado o conjunto Cliente/Servidor devem trabalha da forma como mostrado pela

Figura 23 e 24:

Para distribuir uma campanha publicitária aos clientes de uma loja, como um

supermercado, o servidor, depois de efetuar pesquisa no banco para receber a campanha

disponível, começa a procurar por dispositivos próximos que tenham o aplicativo cliente

instalado e possam trocar informações. Ao encontrar um cliente o servidor envia a

mensagem para o usuário, que pode lê-la direto no seu celular.

O inverso acontece quando um usuário, ao entrar em uma loja com o servidor

instalado, digita no campo de pesquisa, o nome de um produto, como, por exemplo, café. O

aplicativo envia uma mensagem ao servidor, que por sua vez se comunica com o banco e

solicita o resultado da pesquisa. Ao receber o resultado o servidor envia os dados para o

usuário que pode ler o resultado da pesquisa no celular.

O resultado da pesquisa contém informações como nome e marca do produto, preço e

sua disponibilidade em estoque, além de sua localização dentro da loja:

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

Page 51: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

39

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

Page 52: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

40

5 CONCLUSÕES

Esse trabalho mostrou todo o procedimento para que uma aplicação faça uso de

dispositivos Bluetooth tanto para JME quanto para JSE visto que as mudanças nas duas

plataformas são ínfimas, já que a API Bluetooth para JSE foi totalmente baseada na API

Bluetooth JME e sua utilização é possível graças a Kits de desenvolvimento como o

BlueCove utilizado nesse projeto.

É possível encontrar muito material para desenvolvimento de aplicativos para JME

más o mesmo ainda não pode ser dito para a plataforma JSE. Esse cenário não poderia ser

diferente visto a intenção na concepção da tecnologia.

O trabalho, então, atinge seus objetivos ao compilar e mostrar o que é necessário para

se programar utilizando a API Bluetooth do Java inclusive utilizando um sistema operacional

livre, como é o caso do Ubuntu, utilizado nesse trabalho.

A finalização dos códigos e a transposição das dificuldades encontradas até aqui só

demandam mais tempo para serem superadas e esse se mostra um desafio e uma certeza que o

autor desse trabalho pretende perseguir.

5.1 Sugestões de Trabalhos Futuros

A finalização do código e teste efetuados em relação à distância de alcance das antenas

Bluetooth, e principalmente a aplicabilidade do sistema comercialmente já podem ser

encaradas como uma ótima continuação.

Nesse trabalho não se pensou em uma forma mais atrativa de exibir as mensagens

publicitárias para os clientes. Foi utilizado apenas texto para exibir as mensagens. Visto que é

possível se transferir qualquer tido de dado usando o Bluetooth, uma outra sugestão de

trabalho futuro seria a utilização de uma linguagem de marcação de texto como HTML para a

melhor visualização das mensagens de campanha.

Page 53: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

41

6 REFERÊNCIAS BIBLIOGRÁFICAS

BRUCE, Walter R.; GILSTER, Ron. Wireless LANs: End to EndTM

. New York: Hungry

Minds, 2002.

CAMPIONE, Mary; WALRATH, Kathy. ABOUT THE JAVA TECHNOLOGY. Out.

2010. Disponível em: <http://download.oracle.com/Javase/tutorial/getStarted/intro/

definition.html>. Acesso em: 11 out. 2010.

DEITEL, Harvey M.; DEITEL Paul J. JAVA COMO PROGRAMAR. 6ª Edição. São Paulo:

Pearson Prentice Hall, 2005.

FANTÁSTICO. Faça o teste e veja se você é viciado em celular. Mar. 2010. Disponível

em: <http://fantastico.globo.com/Jornalismo/FANT/0,,MUL1548459-15605,00FACA+O+

TESTE+E+VEJA+SE+VOCE+E+VICIADO+EM+CELULAR.html>. Acesso em: 11 out.

2010.

HOPKINS, Bruce; ANTONY, Ranjith. BLUETOOTH FOR JAVA. New York: Apress,

2003.

INFO: Brasil tem mais celulares do que pessoas. Nov. 2010. Disponível em:

<http://info.abril.com.br/noticias/tecnologia-pessoal/brasil-tem-masi-celulares-do-que-pessoas

-20112010-3.shl>. Acesso em: 25 nov. 2010.

JANDL JUNIOR, Peter. INTRODUÇÃO AO JAVA. São Paulo: Berkley, 2002.

ORACLE. JAVA SE NAMING AND VERSIONS. Out 2010. Disponível em:<http://

www.oracle.com/technetwork/Java/Javase/namechange-140185.html>. Acesso em 13 out. 2010.

KNUDSEN, Jonathan; LI, Sing. BEGNNING J2ME: From Novice to Professional. 3ª

Edição. New York: Apress, 2005.

TANENBAUM, Andrew S. REDES DE COMPUTADORES. 4ª Edição. Rio de Janeiro:

Elsevier, 2003.

Page 54: BLUETOOTH COMO ESTRUTURA DE COMUNICAÇÃO …lyceumonline.usf.edu.br/salavirtual/documentos/1893.pdf · technology companies that was seeking a solution for connecting mobile devices

42

THE OFFICIAL BLUETOOTH TECHNOLOGY INFO SITE. About the Bluetooth SIG.

Out. 2010. Disponível em: <http://www.Bluetooth.com/English/SIG/Pages/default. aspx>.

Acesso em: 11 out. 2010.