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
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Implementare l'infinite scroll con QuickGrid in Blazor Server
Ordinare randomicamente una lista in C#
Migliorare l'organizzazione delle risorse con Azure Policy
Utilizzare il nuovo modello GPT-4o con Azure OpenAI
Utilizzare QuickGrid di Blazor con Entity Framework
Utilizzare Container Queries nominali
Configurare lo startup di applicazioni server e client con .NET Aspire
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Collegare applicazioni server e client con .NET Aspire
Cambiare la chiave di partizionamento di Azure Cosmos DB
Potenziare la ricerca su Cosmos DB con Full Text Search