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
Evitare la compressione degli artefatti in un workflow di GitHub
Canary release con .NET Aspire
Ospitare n8n su Azure App Service
Creare una file based app con C#
Centralizzare e governare MCP server e Skill con Azure API Center
Gestione delle scrollbar dinamiche in HTML e CSS
Esporre tool MCP con Azure Functions
Running workloads and operations with Azure Kubernetes Service
Eseguire una ExecuteUpdateAsync senza usare un'expression con Entity Framework
Raggruppamento degli aggiornamenti di dipendenze tra directory in un monorepo con Dependabot
Configurare OpenTelemetry per Application Insights su ASP.NET Core
Utilizzare ExecuteUpdate per aggiornare colonne JSON in Entity Framework


