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
Collegare applicazioni server e client con .NET Aspire
Ridimensionamento automatico input tramite CSS
Recuperare gli audit log in Azure DevOps
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework
Ottimizzare le performance usando Span<T> e il metodo Split
.NET Aspire per applicazioni distribuite
Gestione file Javascript in Blazor con .NET 9
Introduzione ai web component HTML
Gestire il routing HTTP in Azure Container App
Conoscere il rendering Server o WebAssembly a runtime in Blazor
Proteggere l'endpoint dell'agente A2A delle Logic App
Creare un agente A2Acon Azure Logic Apps


