JABWT: Device Discovery

Impariamo come fare il Device Discovery con un dispositivo che supporta le API JABWT

Le nuove API uscite da poco per il supporto al BlueTooth in J2ME , JABWT ( Java BlueTooth Wireless Technology ) ci permettono di avere il completo controllo del BlueTooth del nostro dispositivo.

Il Device Discovery è il primo passo per avere informazioni riguardanti device BT operanti nei paraggi. Chiaramente prima di far dialogare le nostre applicazioni con altri dispositivi dovremo avere delle informazioni. Il passo base è appunto quello di trovare questi dispositivi. Per avere una più completa panoramica di queste API possiamo andare a vedere le informazioni riguardanti la JSR82.

Le classi del package javax.bluetooth che ci interessano per il nostro scopo sono le seguenti:

Il nostro agente di ricerca

Dobbiamo prima di tutto ottenere un DiscoveryAgent dalla nostra LocalDevice. Ecco quindi il codice per fare ciò

Tutto ciò deve essere fatto preferibilmente in un thread perchè la maggior parte dei metodi riguardanti il BlueTooth sono bloccanti

DiscoveryListener

Implementiamo l’interfaccia DiscoveryListener che sarà usata sia nel Device Discovery che nel Service Discovery (argomento che verrà  trattato successivamente) per notificare alla nostra MIDlet i risultati della ricerca

Il metodo inquiryCompleted deve essere implementato dal programmatore in base a quello che vuole essere fatto quando la ricerca delle device è stata completata. Altro metodo interessante è servicesDiscovered che riguarderà  il tipo di servizi che sono stati trovati attivi nelle device BT trovate dalla nostra Device Discovery.

 

Avviare la ricerca

Adesso che abbiamo implementato il nostro agente e interfaccia listener dobbiamo metterci in inquiry mode ovvero alla ricerca di device BT. Il metodo startInquiry serve a questo, ma noi possiamo anche pensare di utilizzare altre device bluetooth, che il nostro dispositivo ha precedente trovato e di cui conserva l’indirizzo. Per fare ciò possiamo semplicemente utilizzare il seguente metodo

oppure

CACHED significa che il nostro dispositivo deve cercare dispositivi trovati nella nostra ultima ricerca, PREKNOWN che deve cercare dispositivi con i quali più frequentemente abbiamo dialogato.

 

Pronto chi parla?

Ora abbiamo a disposizione tutto quello che ci serve per dialogare con la device BT. Per capire che tipo di device sia possiamo semplicemente controllare il suo class code, un valore che esprime la tipologia della nostra device. Quando effettuiamo la ricerca dei dispositivi, viene richiamato in callback il metodo deviceDiscovered come abbiamo visto precedente.

In questo metodo viene passato come argomento la DeviceClass, che è appunto la classe di appartenenza del dispositivo trovato. Qui di seguito potete vedere un riepilogo delle classi dei vari dispositivi

Method Return Value Class of Device
getServiceClasses() 0x22000 Networking and Limited Discoverable Major Service Classes
getServiceClasses() 0x100000 Object Transfer Major Service Class
getMajorDeviceClass() 0x00 Miscellaneous Major Device Class
getMajorDeviceClass() 0x200 Phone Major Device Class
getMinorDeviceClass() 0x0C With a Computer Major Device Class, Laptop Minor Device Class
getMinorDeviceClass() 0x04 With a Phone Major Device Class, Cellular Minor Device Class

 

Per maggiori info consultate i seguenti siti

http://jcp.org/jsr/detail/82.jsp
http://www.bluetooth.com/
http://www.bluetooth.org/assigned-numbers/baseband.htm

 

Una risposta

  1. aprile 8, 2013

    […] volta capito come poter fare il Device Discovery vediamo come poter trovare dei servizi nei dispositivi BT grazie al Service […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *