quinta-feira, 11 de dezembro de 2008

Bluetooth + Java

O Bluetooth se tornou um padrão quando o assunto é a comunicação com dispositivos móveis. O baixo consumo energético e custo reduzido são só alguns fatores que influenciaram a sua adoção.

Estabelecer comunicação com dispositivos Bluetooth não é uma tarefa complexa e já existem várias APIs para as mais diferentes linguagens que simplificam ainda mais o trabalho. Como o Java é uma plataforma praticamente onipresente tanto em desktops (independente do sistema operacional) quanto em aparelhos móveis, ele é uma boa escolha na hora da troca de dados. Para isso é preciso entender um pouco da forma como o Java trata conexões Bluetooth.


JSR-82

Como várias outras propriedades, o suporte ao Bluetooth é definido por uma especificação Java, a JSR-82. Isso significa que a linguagem já prevê o suporte mas, ao contrário do que pode parecer, ela não o oferece por padrão. A JSR-82 apenas traz informações sobre como deve ser feito o suporte ao Bluetooth mas a implementação, no caso do Java para computadores, foi deixada a cargo de terceiros. Com isso surgiram várias bibliotecas que implementam totalmente ou em parte as especificações para a comunicação Bluetooth. Muitas delas são proprietárias (inlcusive pagas) enquanto outras adotam modelos livres. Algumas delas são:
  • avetana (produto comercial gratuito na versão Linux)
  • bluecove (gratuita, LGPL para Windows e OSX e GPL para Linux)
  • bluesock (Common Public License)
As bibliotecas de alguma dessas implementações é necessária para completar o suporte a Bluetooth em seu aplicativo Java. Já na versão do Java para dispositivos móveis, a "micro edition", a implementação do JSR-82 já foi disponibilizada por padrão, não sendo necessária nenhuma biblioteca extra.


Drivers Bluetooth

Mesmo tendo incluído a biblioteca de implementação do Bluetooth em seu programa, ele ainda não poderá executar corretamente em seu computador. Como todo dispositivo de hardware, o Bluetooth (interno ou usb) precisará dos drivers corretos para funcionar. No caso do OSX da Apple isso não chega a ser problema já que tanto o hardware quanto o driver vêm pré-instalados de fábrica. Para o Linux, a melhor escolha é o driver BlueZ que pode ser instalado usando o Synaptic (apt-get) ou a ferramenta de instalação/atualização preferida. O driver BlueZ opera sem problemas com a implementação bluecove.

Já no Windows...

O suporte ao Bluetooth foi incluído no service pack 2 do Windows XP. A partir dele, quando você encaixa um dispositivo Bluetooth USB o hardware é normalmente identificado e o driver próprio (stack) instalado. Entretanto esse stack padrão, "Microsoft Bluetooth Stack", não traz um suporte completo. É possível que seu programa funcione perfeitamente com ele, mas em vários casos isso não acontece. Alguns exemplos: comunicação com celulares Motorola e com Wii Remotes.

Nesses casos a saída é usar drivers de terceiros. O Widcomm é bastante comum e funciona perfeitamente com vários dispositivos. O Bluesoleil é outra alternativa. Você encontra esses drivers para download na Internet, mas a versão que acompanha o seu hardware é sempre a recomendada.

Nenhum comentário:

Postar um comentário