Una vez que haces un par de aplicaciones cliente, ya son casi todas iguales, pero en definitiva la estructura básica se resumen en:
->startApp()
Método indispensable del MIDlet, en el que se inicializan las variables, ponemos la pantalla que se van a mostrar a lo largo de la aplicación, creamos los comandos que vamos a usar en nuestra aplicación y (una cosa muy importante) inicializar el bluetooth local.
->pauseApp()
Bueno, en este método meteremos todo aquello que debe ocurrir en caso que el MIDlet pase a estado de "pausa" (si recibimos una llamada, el programa se pasará a estado "pausa")
->destroyApp()
Aquí, irán todas aquellas "rutinas" que deben ocurrir cuando el MIDlet se "destruye", en otras cuentas, cuando cerramos el programa.
Ahora viene el método que recoge los "Comandos".
Los comandos son eventos que ocurren cuando el usuario interacciona con el móvil. Supongamos que tenemos un menú, con 2 opciones, una de ellas es "buscar dispositivos bluetooth" la otra es "Salir", pues cuando pulsemos sobre "Buscar dispositivos bluetooth" se lanzará un evento que irá al método:
->commandAction()
"Acciones de los comandos", como comentaba arriba, en este método se recogen los eventos, y aquí ya hacemos lo que queramos con ellos. Continuando con el ejemplo anterior, si nos llega el evento que hemos creado para la opccion de "buscar dispositivos...", pues haremos una cosa, en caso que nos llegue el evento de "Salir" haremos otra.
Este método anterior es como...un "Switch", por lo menos yo lo veo así. Nos llegan eventos y dependiendo del evento que sea ya lo "enviamos" a otro lugar, a otra función para que haga cosas especificas.
Por aquí en medio crearía un método que se dedique a realizar la búsqueda de dispositivos, con un startInquiry(...) (Comienzo de búsqueda).
Cada vez que un dispositivo sea descubierto, este método se ejecutará automáticamente:
->deviceDiscovered(RemoteDevice remoteDevice, DeviceClass clase)
Aquí nos encargamos de hacer lo necesario con el dispositivo encontrado: guardarlo en un array, buscar sus servicios asociados, mostrar sus datos...todo lo que queramos.
->inquiryCompleted()
Cuando la búsqueda se ha realizado por completo, se ha parado por algún error o se ha cancelado, se llama a este método, aquí ya mostramos los mensajes correspondientes y realizamos las acciones que creamos convenientes.
->servicesDiscovered(int transID, ServiceRecord[] servRecord)
Método que se llama automáticamente cuando un servicio ha sido descubierto, los servicios se guardan y encapsulan en DataElements (sistema de encapsulamiento que todavía me cuesta majenar.
->serviceSearchCompleted
Una vez que se ha acabado la búsqueda de servicios, ya sea por cancelación del usuario, por fallo o simplemente que ha terminado, este método será llamado automáticamente.
Pues eso, esto es más o menos la estructura de una aplicación cliente, con sus variantes, claro...