dia.com.br/WEBMOBILE/magazine/edicao8/wm08-4-bluecove.zip">Clique aqui para ler esse artigo em PDF.![]()
Bluecove: Comunicando aplicativos J2SE com aplicativos J2ME através de Bluetooth
Uma implementação da API JSR-82 para Java no Windows XP SP 2
Leitura Obrigatória: Artigos da WebMobile introdutórios sobre Bluetooth (edições 3 e 4, ano 1).
Imagine que você deseja desenvolver uma aplicação para PC que acesse, através de um receptor USB bluetooth, dispositivos que tenham suporte a bluetooth como um celular, um notebook, uma impressora ou até mesmo um leitor de código de barras (Figura 1).
A princípio, a implementação de um aplicativo em J2SE que obtenha informações de um dispositivo através de uma comunicação bluetooth deveria ser algo bastante simples, levando em consideração que as facilidades disponibilizadas através de J2ME para implementar essa funcionalidade em dispositivos móveis também estejam presentes em J2SE.
Sendo assim, o mais intuitivo seria a realização dos seguintes passos: a inicialização da pilha de protocolos bluetooth (Nota 1) definindo os seus respectivos parâmetros de descoberta (GIAC - General Inquiry Access e LIAC - Limited Inquiry Access Code), seguido do envio de uma solicitação de descoberta de dispositivos (chamada inquiry) e, após isso, o envio e recebimento de dados em uma conexão RFCOMM com o dispositivo que foi selecionado.

Figura 1. Comunicação de desktops com bluetooth e outros dispositivos.
Nota 1. Pilha de protocolos bluetooth
Para o melhor entendimento do bluetooth, é importante conhecer como funciona a sua pilha de protocolos. Como qualquer outra tecnologia de comunicação, o bluetooth inclui uma pilha de protocolos, parte implementada em software e outra parte via firmware. Sua principal função é controlar as configurações do dispositivo, parâmetros de comunicação e níveis de consumo de energia, de forma que fique transparente para o desenvolvedor. Essa pilha é dividida em camadas (Figura 2).

Figura 2. Pilha de Protocolos Bluetooth ( Fonte: Bluetooth SIG).
Na Tabela 1 são mostradas as principais camadas da pilha e que protocolos podem ser usados em cada uma.
| Camadas de Protocolo | Protocolos |
| Protocolos principais bluetooth | Banda Base, LMP, L2CAP, SDP |
| Protocolo para substituição de cabos | RFCOMM |
| Protocolo de controle de telefonia | TCS Binary, AT Commands |
| Protocolos suportados | PPP, TCP/UDP, IP, OBEX, WAP,WAE, vCard, vCal |
Tabela 1. Camadas e Protocolos da Pilha Bluetooth (Tradução Bluetooth SIG)
Infelizmente, para esse tipo de comunicação, essas facilidades presentes em J2ME não foram definidas de forma nativa em J2SE. Com isso, a implementação de uma comunicação bluetooth entre um desktop e um outro dispositivo pode ser feita utilizando as seguintes abordagens:
· Utilizar uma API Java com a implementação interna da pilha bluetooth: esta seria a melhor opção, pois a implementação das camadas da pilha ficam dentro do dispositivo bluetooth e a aplicação Java interagiria diretamente com o hardware do dispositivo, proporcionando melhor desempenho na execução de instruções. Contudo, a utilização dessa abordagem é pouco viável visto que aplicações desenvolvidas em outras linguagens teriam problemas em acessar essa API. Além disso, essa implementação seria built in, ou seja, seria o equivalente a ter uma placa de rede que fosse responsável pela implementação da pilha de protocolos TCP/IP, o que limitaria a sua compatibilidade com possíveis evoluções da tecnologia (a cada nova implementação da pilha de protocolos bluetooth seria necessário fazer um upgrade de firmware do dispositivo). Além disso, as APIs existentes que utilizam essa abordagem são proprietárias e não implementam todos os protocolos necessários para o desenvolvimento de aplicações.
· Utilizar uma implementação da pilha bluetooth dependente do sistema operacional: esta abordagem é caracterizada pela parte da pilha de protocolos bluetooth ser dependente do sistema operacional (Software Driver Stack) e seu acesso ser realizado por uma API Java que disponibilize as funcionalidades através de chamadas JNI (Java Native Interface). Como exemplo de pilhas bluetooth dependentes do sistema operacional temos: no Windows a implementação desta pilha no SP2 ( ...