Lezione Bluetooth Sul Codice Java Client - Presentation Transcript
Lezione Bluetooth sul codice java client Prof. Silvano Natalizi Classe IVAL, Maggio 2009
Discovery
Discovery è quell’attività che consente di trovarsi ai dispositivi Bloetooth
Device discovery permette di trovare i dispositivi bluetooth nelle immediate vicinanze
Service discovery permette di trovare i servizi nei dispositivi trovati
DeviceListener
Per ricercare altri dispositivi, chiedi alle istruzioni API Bluetooth di cominciare la ricerca e poi siediti mentre l’oggetto listener (ascoltatore) viene notificato sui dispositivi o servizi trovati
L’oggetto listener è un’implementazione della classe interfaccia DeviceListener
Questa interfaccia ha 4 metodi, 2 per il device discovery, 2 per il service discovery
Il codice di ricerca dispositivi
Per iniziare la ricerca dispositivi,
a) si chiede al dispositivo “locale” di mettere a disposizione un “agente” discovery
b) si affida all’agente il metodo startInquiry() per iniziare la ricerca
Quando un device è trovato
Il metodo deviceDiscovered() è chiamato ogni qual volta l’agente trova un device.
Pertanto questo metodo viene automaticamente mandato in esecuzione dal sistema durante la fase di ricerca iniziata dall’istruzione DiscoveryAgent.startInquiry();
Parametri di input del metodo deviceDiscovered
Ciascun dispositivo trovato è inviato al metodo deviceDiscovered() come un oggetto RemoteDevice
La sua classe di appartenenza che lo identifica come stampante, o come PC, o come Cellulare od altro dispositivo, viene pure passata al metodo deviceDiscovered() come un oggetto DeviceClass
Il codice del metodo deviceDiscovered()
inquiryCompleted()
Al termina della fase di ricerca dispositivi
Abbiamo tutti i dispositivi trovati memorizzati, come oggetti RemoteDevice, all’interno dell’array deviceList
Automaticamente dal sistema viene mandato in esecuzione il metodo inquiryCompleted()
la ricerca dei servizi
Completata la ricerca dei dispositivi, si inizia la ricerca dei servizi di ciascun dispositivo memorizzato nell’array deviceList
Questa ricerca viene mandata in esecuzione all’interno del metodo inquiryCompleted()
Il codice del metodo inquiryCompleted()
Nel metodo inquiryCompleted mettiamo solo l’istruzione che manda in esecuzione una funzione specializzata nel ricercare per ogni dispositivo il servizio che ci interessa.
Pertanto passiamo a questa funzione in input l’array dei dispositivi trovati devicelist ed il servizio desiderato.
Ricerca servizi
Nel metodo ricerca servizi, si ricerca per ogni dispositivo trovato il servizio che ci interessa
A tale scopo bisogna chiedere chiedere al dispositivo locale di metterci a disposizione un altro agente per fare la searchServices()
I servizi
I servizi sono rappresentati da UUID universally unique identification number
Si crea un servizio specificando un UUID per mezzo di un numero esadecimale a 128 bit
searchServices()
L’istruzione searchServices() esamina la lista dei servizi, del dispositivo che gli è sottoposto
Questa lista di servizi è inviata a searchServices() come un array di UUID
Pertanto anche se vogliamo ricercare un solo servizio, dobbiamo comunque inserirlo come un elemento di un array UUID
Il primo parametro di searchServices lo lasciamo a null
Il codice del metodo ricercaServizi
Quando è scoperto un servizio
L’istruzione searchServices(), ogniqualvolta scopre, nel dispositivo indagato, un servizio che corrisponde ad uno di quelli cercati, manda in esecuzionea automaticamente il metodo servicesDiscovered().
Quando è completata la ricerca dei servizi viene mandato in esecuzione automaticamente il metodo serviceSearchCompleted()
Il metodo servicesDiscovered
A questo metodo è passato un oggetto ServiceRecord
Un serviceRecord descrive le proprietà di un servizio Bluetooth
Il codice del metodo servicesDiscovered
Fine ultimo del codice client
Il risultato finale della device discovery e service discovery è quello di ottenere i Service-Record che forniscono le stringhe di collegamento tra client e server
0 comments
Post a comment