Cet article contient des réponses aux questions fréquemment posées sur l’API Bluetooth UWP.
Quelles API utiliser ? Bluetooth Classic (RFCOMM) ou Bluetooth Low Energy (GATT) ?
Il y a différentes discussions en ligne autour de ce sujet général. Nous allons donc garder cette réponse carrément sur la différence par rapport à Windows. Voici quelques recommandations générales à prendre en compte :
Bluetooth LE (Windows.Devices.Bluetooth.GenericAttributeProfile)
Utilisez les API GATT lorsque vous communiquez avec un appareil prenant en charge Bluetooth Low Energy. Si votre cas d’usage est peu fréquent, faible bande passante ou nécessite une faible puissance, Bluetooth Low Energy est la réponse. L’espace de noms principal qui inclut cette fonctionnalité est Windows.Devices.Bluetooth.GenericAttributeProfile.
Quand ne pas utiliser Bluetooth LE
- Bande passante élevée, scénarios à fréquence élevée. Si vous devez constamment conserver la synchronisation avec de grandes quantités de données, envisagez d’utiliser bluetooth classique ou peut-être même wi-fi.
Bluetooth Classic (Windows.Devices.Bluetooth.Rfcomm)
Les API RFCOMM donnent aux développeurs un socket pour effectuer une communication de type port série bidirectionnel. Une fois que vous avez un socket, les méthodes d’écriture et de lecture sont assez standard. Une implémentation de ceci est présentée dans l’exemple de conversation Rfcomm.
Quand ne pas utiliser Bluetooth Rfcomm
- Notifications. Le protocole BLUETOOTH GATT a une commande spécifique pour cela et entraînera une consommation d’alimentation nettement moindre et des temps de réponse plus rapides.
- Vérification de la proximité ou de la détection de présence. Il est préférable d’utiliser les API de publication et de se connecter via Bluetooth LE.
Pourquoi mon appareil Bluetooth LE cesse-t-il de répondre après une déconnexion ?
La raison la plus courante est que l’appareil distant a perdu des informations de jumelage. Un grand nombre d’appareils Bluetooth plus anciens ne nécessitent pas d’authentification. Pour protéger l’utilisateur, toutes les transactions de jumelage effectuées à partir de l’application Paramètres nécessitent une authentification et certains appareils n’ont pas été conçus à l’esprit.
À compter de la version 1511 de Windows 10, les développeurs contrôlent l’établissement d’une liaison de jumelage. L’exemple d’énumération et de jumelage d’appareils détaille les différents aspects de l’association de nouveaux appareils.
Dans cet exemple, nous initions le jumelage avec un appareil sans chiffrement. Notez que cela fonctionne uniquement si l’appareil distant ne nécessite pas de chiffrement ou d’authentification pour fonctionner.
// Get ceremony type and protection level selections
// You must select at least ConfirmOnly or the pairing attempt will fail
DevicePairingKinds ceremonySelected = DevicePairingKinds.ConfirmOnly;
// Workaround remote devices losing pairing information
DevicePairingProtectionLevel protectionLevel = DevicePairingProtectionLevel.None
DeviceInformationCustomPairing customPairing = deviceInfoDisp.DeviceInformation.Pairing.Custom;
// Declare an event handler - you don't need to do much in PairingRequestedHandler since the ceremony is "None"
customPairing.PairingRequested += PairingRequestedHandler;
DevicePairingResult result = await customPairing.PairAsync(ceremonySelected, protectionLevel);
Dois-je associer des appareils Bluetooth avant de les utiliser ?
Vous n’avez pas besoin de coupler des appareils avant de les utiliser si vous utilisez Bluetooth RFCOMM (classique). À compter de la version 1607 de Windows 10, vous pouvez simplement rechercher des appareils à proximité et les connecter. L’exemple de conversation RFCOMM mis à jour affiche cette fonctionnalité.
(14393 et ci-dessous) Cette fonctionnalité n’est pas disponible pour bluetooth Low Energy (client GATT), vous devrez donc toujours associer via la page Paramètres ou à l’aide des API Windows.Devices.Enumeration pour accéder à ces appareils.
(15030 et versions ultérieures) Le jumelage d’appareils Bluetooth n’est plus nécessaire. Utilisez les nouvelles API asynchrones telles que GetGattServicesAsync et GetCharacteristicsAsync pour interroger l’état actuel de l’appareil distant. Pour plus d’informations, consultez la documentation du client.
Quand dois-je associer un appareil avant de communiquer avec lui ?
En règle générale, si vous avez besoin d’une liaison fiable et à long terme avec un appareil, associez-la en dirigeant l’utilisateur vers la page des paramètres ou à l’aide des API d’énumération et de jumelage de l’appareil. Si vous avez simplement besoin de lire des informations à partir de l’appareil exposé publiquement (capteur de température ou beacon), connectez-vous ou écoutez des publicités sans faire d’effort pour l’associer à l’appareil. Cela empêche les problèmes d’interopérabilité à long terme, car un grand nombre d’appareils ne prennent pas en charge le jumelage.
Tous les appareils Windows prennent-ils en charge le rôle périphérique ?
Non. Il s’agit d’une fonctionnalité dépendante du matériel, mais une méthode est fournie, BluetoothAdapter.IsPeripheralRoleSupported, pour interroger s’il est pris en charge ou non. Les appareils actuellement pris en charge incluent Windows Phone sur 8992+ et RPi3 (Windows IoT).
Puis-je accéder à ces API à partir de Win32 ?
Oui, toutes ces API doivent fonctionner. Ce blog détaille la façon d’appeler des API Windows à partir d’applications de bureau.
Cette fonctionnalité est-elle censée exister sur une référence SKU spécifique ?
Bluetooth LE : Oui, toutes les fonctionnalités sont dans OneCore et doivent être disponibles sur les appareils les plus récents w/ une pile Bluetooth LE fonctionnelle.
Mise en garde : le rôle périphérique dépend du matériel et certaines éditions de Windows Server ne prennent pas en charge Bluetooth.
Bluetooth BR/EDR (classique) : certaines variantes existent, mais surtout, elles ont une prise en charge au niveau du profil très similaire. Consultez les documents sur RFCOMM et ces documents de profil pris en charge pour PC et Téléphone