Elencare i device disponibili via Bluetooth con Windows Phone 8

di Daniele Bochicchio, in Windows Phone 8,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi