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
Usare lo spread operator con i collection initializer in C#
Implementare l'infinite scroll con QuickGrid in Blazor Server
Ottimizzazione dei block template in Angular 17
Limitare le richieste lato server con l'interactive routing di Blazor 8
Assegnare un valore di default a un parametro di una lambda in C#
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Load test di ASP.NET Core con k6
Creare un webhook in Azure DevOps
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Evitare la script injection nelle GitHub Actions
Creare form tipizzati con Angular
Miglioramenti nell'accessibilità con Angular CDK