martes, 11 de septiembre de 2007

Bluetooth Stack

Estos últimos meses, he estado desarrollando en J2ME, usando mi querido Netbeans y el Wireless Tool Kit.

Este entorno emulaba las librerías de bluetooth que el dispositivo móvil posee ya de por sí, así que todo ha sido "fácil".

Ahora, estos días he querido implementar una aplicación J2SE en el portátil que te descubriese los dispositivos móviles, antes de ponerme a picar código, he querido probar un programita que he encontrado por Internet, que hacía eso mismo: te buscaba los dispositivos bluetooth que hay en el radio de alcance.

Ahora viene lo "difícil", ahora ya trabajo con un dispositivo bluetooth real (el pinganillo de mi portátil), y necesito una librería que me permita "comunicarme" con el pinganillo.

Durante estos 3 días, me he pateado mil y una páginas web sobre el tema. En todas ellas, me comentaban que necesitaba un "bluetooth Stack".

Primero intenté usar la que me ofrecía:

www.javabluetooth.org

De esta página puede sacar las clases y los .java que necesitaba para implementar el sistema, una vez compilado y obtenido el .jar, al añadir la librería al programa, me daba problemas de "inicialización de la pila". Buscando en Internet un poco más, encontré esta API dependía del javax.comm. (API de java que te permite acceder a los puertos hardware del sistema). Varios intentos fallidos de compilar correctamente este API, me dí por vencido y busqué otra alternativa.

En Avetana, aquí me bajé una API ya compilada (un .jar) que solo tuve que añadir al proyecto Netbeans, mi felicidad no era del todo completa, ya que la licencia de este API era de 14 días. Pero bueno, vamos a probarlo. Anoche, eran casi las 2 de la mañana, cuando conseguí que el sistema me descubriese el móvil.

Esta mañana, escribí un correo a los alemanes que llevan la página de aventa, comentándoles si había algún tipo de licencia no comercial para linux, que fuese gratuita e indefinida. A los 10 minutos recibo respuesta del señor Moritz Gmelin, me comenta que para linux la licencia está en GPL (General Public License)...Pero como se me ha podido pasar!!!Buscando más en la página la encuentro! La muy mamona estaba bien escondida:

API bluetooth de Avetana

No estaba compilado, sin problema, lo compilamos, lo añadimos al proyecto...y vualá!!!
A la izquiera, el pequeño programita que busca el dispositivo bluetooth (Jbeer), y a la derecha comprobando que el sistema hace "ping" con el movil.

¿Os he dicho que amo linux?

20 comentarios:

Anónimo dijo...

Parece que lo las apis de bluetooth para windows son un poquito mas complejas.
Tengo un gran problema, estoy desarrollando mi proyecto fin de carrera que consta de una aplicacion j2se que posee un servidor java localhost, y luego una aplicacion tb con netbeans en j2me, la cual es un cliente bluetooth, uso el emulador que posee netbeans y he instalado el paquete wireless toolkit...
El problema es que la aplicacion cliente se ejecuta en mi pc y el servidor tb, y no tengo forma de que el cliente encuentre al servidor.
No se cual puede ser el problema, estaria muy agradecido si me pudieras ayudar.
un saludo y gracias de antemano

Jbeer dijo...

Buenas compañero!

Te comento: El simulador de netbeans de J2me, no se "comunica" con la aplicación que tengas en J2se por bluetooth... de hecho nunca lo he conseguido...¿tienes un dispositivo bluetooth hardware? Todas las pruebas que he tenido que hacer han sido movil-pc

Si tienes alguna duda, consultame, tanto pelearme con esto ya me hace casi-experto ;)

Anónimo dijo...

JBeer gracias por responder, imagino que te has peleado monton con esto yo tambien estoy en ello jeje,es divertido pero algunas veces te saca de quisio XD.
Te agradezco que me ayudes estoy un poco estresado con el proyecto, te comento como tengo montado el sistema.
-Un portatil con un usb bluetooth y dentro de el corriendo una aplicacion j2SE que entre muchas cosas es un servidor bluetooth.
-Un cliente bluetooth j2me dentro de la misma maquina, usando el emulador de netbeans.
¿como m indicas no se pueden comunicar?, ¿que se podria hacer?, no creo que pueda conseguir una pda o un movil bueno para la ponencia de mi proyecto.
Entonces claro nose como hacer para conectar ambas aplicaciones siendo el cliente emulado. ¿que me recomiendas con tu experiencia?.

Jbeer dijo...

Tal y como lo tienes implementado nunca conseguiras que se comuniquen.

El dispositivo hardware bluetooth, buscará dispositivos "fuera", no "dentro" de la máquina (los simulados)

Usas windows?

En mis andanzas encontré un simulador de entorno Bluetooth, que quizás te sirva:

http://www.rococosoft.com/registration_simulator.html

Es un simularod bluetooth: lo que tu necesitas.

Para ello tendrás que enviar un correo a estos señores, diciendo que quieres el producto, diles que eres estudiante de alguna universidad. Así te libras de pagar licencias.

En poco tiempo te responderán y te darán una URL para que te descargues el programa.

Nunca lo he probado, ya que me lo bajé para Linux y nunca conseguí ponerlo en marcha.

Ya me contarás como te va ;)

Anónimo dijo...

Hola:

Me ha encantado su post, creo que me servirá mucho para un trabajo, pues ando como loco intentando crear un servidor BT para j2se en windows, y creo que me pasaré a Linux para usar el API de avetana.

Me sería de gran ayuda que pudieras publicar el pequeño código del ejemplo que has usado para la captura de imagen. Muchas gracias.

Saludos.

Jbeer dijo...

Buenas Sema,

si quieres mejor, déjame tu correo y te envío el código completo. ok?

PD. En windows puedes usar la librería "Bluecove", que es gratuita también.

Saludos!

Anónimo dijo...

Muchísimas gracias por adelantado. Mi correo es garcia_garcia_@hotmail.com.

Ya tengo bajadas las librerias de avetana (los muy tunos las tienes de pago para windows y gpl para linux...), así como el netbeans listo para picarle código.

Gracias de nuevo y espero con anhelo tu correo.

Saludos.

Anónimo dijo...

Buenas
Me intereso mucho su articulo por que estoy trabajando para un proyecto de fin de carrera con tema de conexion de bluetooth de un pc con un móvil, bueno descarge el bluecover y para empezar intente detectar mi aparato bluetooth con uno de los métodos de deteccion pero nada.... agradeceria su ayuda o alguna orientacion, algun articulo que me recomienda

Jbeer dijo...

Bueno, en este blog se comentan varias cosas sobre la conexión con Bluetooth mediante Java. De todas formas, tengo un montón de referencias y páginas webs guardadas en mis "favoritos" sobre el tema. Si me pasas tu correo, te envío esas referencias para que le eches un vistazo

Anónimo dijo...

Bueno envieme en mi correo marionk85@hotmail.com. Bueno mi principal problema es que tengo un dispositivo bluetooh pero no me puedo conectar a ella

Anónimo dijo...

Que tal jbeer bueno en mi caso estoy realizando uuna conexion servidor(pc) y cliente(movil)en guindos para esto estoy utilizando bluecove.
Me seria util el codigo que utilizaste en tu ejemplo si me lo puedes mandar a mi correo te lo agradeceria de antemano mi correo es ladocrew3@hotmail.com
saludos

cheetahs on crazy dijo...

viejo gracias estaba en las mismas y me ha servido mucho la informacion.

Anónimo dijo...

Estoy relizando un proyecto para fin de carrera el proyecto se trate de enviar imagenes via bluetooth desde un servidor que sera una pc a unos equipos moviles el problema es que no puedo hacer la conexion entre mi servidor y el cliente. Podrian enviarme un codigo de prueba para hacer la conexion se los agradecere mucho mi correo es junior_arte_07@hotmail.com
Gracias

Anónimo dijo...

hola buenas tardes quisiera que me ayudaran, como puedo realizar una aplicación en el celular con net beans para control de un robot via gprs quiero programar mi celular nokia con las instrucciones de avanzar retroceder izquierda derecha alguien que me ayude

Anónimo dijo...

hola buenas tardes quisiera que me ayudaran, como puedo realizar una aplicación en el celular con net beans para control de un robot via gprs quiero programar mi celular nokia con las instrucciones de avanzar retroceder izquierda derecha alguien que me ayude spider_hombre100@hotmail.com

Gustavo Olivera Rodrìguez dijo...

Hola que tal, estoy muy interesado en la aplicación que mencionas aquí,y llevo varios días peleandome con ese asunto si fueras tan amable de enviarme el codigo completo por favor: olivera124@gmail.com

Unknown dijo...

Que tal jbeer bueno en mi caso estoy realizando uuna conexion servidor(pc) y cliente(movil)para esto estoy utilizando bluecove.
Pero aun no consigo hacerlo, creo que estoy inicializando mal la pila, te agradecería si me puedes ehcar una mano con esto.
Muchas gracias de antemano mi mail es este: lfmaldonado@gmail.com

Unknown dijo...

Saludos Jbeer, me parece muy interesante tu trabajo, me podrías ayudar con url´s que tengas para investigar sobre el tema?

Muchas gracias.
Mi correo aavendan@gmail.com

Unknown dijo...

HOLA JBEER !
ESTOY TRATANDO DE COMPILAR EN NETBEAN
CON AVENTA PERO ME SALE ESTE EROOR. TIENE IDEA QUE SEA?
"Exception in thread "main" java.lang.UnsatisfiedLinkError: de.avetana.bluetooth.stack.BlueZ.hciDevBTAddress Lde/avetana/bluetooth/util/BTAddress;
at de.avetana.bluetooth.stack.BlueZ.hciDevBTAddress(Native Method)
at prueba.Inquiry.inquire(Inquiry.java:73)
at prueba.Inquiry.main(Inquiry.java:62)
Java Result: 1" GRACIAS POR ANTICIPADO.

Jbeer dijo...

Buenas

Bien, ese fallo ya lo he visto a algún que otro compañero. Si no recuerdo mal, era un problema de que el Bluetooth no estaba preparado. ¿Que tipo de Bluetooth usas? ¿uno integrado en el pc/portatil?