Le API per accedere alle funzionalità Bluetooth di Windows Phone 8 sono contenute all'interno del namespace Windows.Networking.Proximity, le cui API sono condivise con WinRT, il runtime per Windows 8 e Windows RT.
Il processo di discovery supporta due scenari:
- app to device: si può fare il discovery solo di device già in pairing;
- app to app: si cerca un'istanza della stessa app su un altro device e, in questo caso, non è necessario effettuare il pairing tra device.
Perché sia possibile sfruttare correttamente queste API, occorre registrarsi le capability ID_CAP_PROXIMITY e ID_CAP_NETWORKING (nel caso di app to device) all'interno del manifest dell'app.
Windows Phone 8 supporta questi profili Bluetooth:
- Advanced Audio Distribution Profile (A2DP 1.2)
- Audio/Video Remote Control Profile (AVRCP 1.4)
- Hands Free Profile (HFP 1.5)
- Phone Book Access Profile (PBAP 1.1)
- Object Push Profile (OPP 1.1)
- Out of Band (OOB) and Near Field Communications (NFC)
Una volta registrate le opzioni all'interno del manifest, dobbiamo lanciare il codice necessario a far partire la ricerca dei device, utilizzando qualcosa come lo snippet che segue, da lanciare all'interno del costruttore o nell'OnNavigatedTo:
PeerFinder.DisplayName = "La mia app"; PeerFinder.Start();
Per mostrare la lista dei device disponibili all'interno di un elenco, da cui poter poi eventualmente comunicare con il device, occorre utilizzare questo codice:
try { // indica solo i device già in pair PeerFinder.AlternateIdentities["Bluetooth:Paired"] = ""; // facciamo dare la lista dei device var peers = await PeerFinder.FindAllPeersAsync(); Devices.ItemsSource = peers.Select(x => new { DisplayName = x.DisplayName, ServiceName = x.ServiceName }); } catch (Exception ex) { if ((uint)ex.HResult == 0x8007048F) { MessageBox.Show("Questa funzionalità richiede il Bluetooth attivo"); } Debug.WriteLine(ex.Message); }
Si possono richiedere i device già in pairing, oppure quelli disponibili, includendo o omettendo l'apposita opzione disponibile nello script precedente.
Nel codice verifichiamo anche che il Bluetooth sia attivo, intercettando l'apposito errore qualora non lo fosse e avvisando l'utente di attivarlo opportunamente.
Una volta ricavato l'elenco dei device, diventa possibile instaurare un socket all'interno del quale far passare la comunicazione.
Per simulare questi scenari occorrono 2 device fisici, perché le API non sono supportate all'interno dell'emulatore.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Eseguire le GitHub Actions offline
Creazione di plugin per Tailwind CSS: espandere le funzionalità del framework dinamicamente
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
Filtering sulle colonne in una QuickGrid di Blazor
Usare le collection expression per inizializzare una lista di oggetti in C#
Effettuare il binding di date in Blazor
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Sostituire la GitHub Action di login su private registry
Gestire i dati con Azure Cosmos DB Data Explorer
Referenziare un @layer più alto in CSS
Limitare le richieste lato server con l'interactive routing di Blazor 8