Android offre une compatibilité intégrée avec la plate-forme Bluetooth à basse consommation (BLE) dans le rôle central et fournit des API que les applications peuvent utiliser pour détecter des appareils, rechercher des services et transmettre des informations.
Voici quelques cas d'utilisation courants:
- Transfert de petites quantités de données entre des appareils à proximité.
- Interagir avec les capteurs de proximité pour offrir aux utilisateurs une expérience personnalisée en fonction de leur position actuelle
Contrairement au Bluetooth classique, la technologie BLE est conçue pour consommer beaucoup d'énergie. Cela permet aux applications de communiquer avec les appareils BLE qui ont des besoins d'alimentation plus stricts, tels que les capteurs de proximité, les moniteurs de fréquence cardiaque et les appareils de fitness.
Attention:Lorsqu'un utilisateur associe son appareil à un autre appareil à l'aide de la technologie BLE, les données communiquées entre les deux appareils sont accessibles à toutes les applications de l'appareil de l'utilisateur.
C'est pourquoi, si votre application collecte des données sensibles, vous devez implémenter une sécurité au niveau de la couche application pour protéger la confidentialité de ces données.
Principes de base
Pour que les appareils compatibles avec le BLE puissent transmettre des données entre eux, ils doivent d'abord former un canal de communication. L'utilisation des API Bluetooth LE nécessite de déclarer plusieurs autorisations dans votre fichier manifeste. Une fois que votre application est autorisée à utiliser le Bluetooth, elle doit accéder à BluetoothAdapter
et déterminer si le Bluetooth est disponible sur l'appareil. Si le Bluetooth est disponible, l'appareil recherche les appareils BLE à proximité.
Une fois un appareil détecté, les fonctionnalités de l'appareil BLE sont découvertes en se connectant au serveur GATT de l'appareil BLE.
Une fois la connexion établie, les données peuvent être transférées avec l'appareil connecté en fonction des services et des caractéristiques disponibles.
Termes et concepts clés
Vous trouverez ci-dessous un récapitulatif des principaux termes et concepts BLE:
- Profil d'attribut générique (GATT)
- Le profil GATT est une spécification générale permettant d'envoyer et de recevoir de courtes données appelées "attributs" via un lien BLE. Tous les profils d'application BLE actuels sont basés sur GATT. Pour en savoir plus, consultez l'exemple Android BluetoothLeGatt sur GitHub.
- Profils
- Le Bluetooth SIG définit de nombreux profils pour les appareils BLE. Un profil est une spécification du fonctionnement d'un appareil dans une application donnée. Notez qu'un appareil peut implémenter plusieurs profils. Par exemple, un appareil peut contenir un cardiofréquencemètre et un détecteur de niveau de batterie.
- Attribute Protocol (ATT)
- GATT repose sur le protocole d'attributs (ATT). Ce protocole est également appelé GATT/ATT. La fonctionnalité ATT est optimisée pour fonctionner sur les appareils BLE. À cette fin, elle utilise le moins d'octets possible. Chaque attribut est identifié de manière unique par un identifiant universel unique (UUID), qui est un format standardisé de 128 bits pour un ID de chaîne utilisé pour identifier de manière unique des informations. Les attributs transportés par ATT sont au format caractéristiques et services.
- Caractéristique
- Une caractéristique contient une seule valeur et 0 à n descripteurs qui décrivent la valeur de la caractéristique. Une caractéristique peut être considérée comme un type, semblable à une classe.
- Décriteur
- Les descripteurs sont des attributs définis qui décrivent une valeur caractéristique. Par exemple, un descripteur peut spécifier une description lisible par l'utilisateur, une plage acceptable pour la valeur d'une caractéristique ou une unité de mesure spécifique à la valeur d'une caractéristique.
- Service
- Un service est un ensemble de caractéristiques. Par exemple, vous pouvez avoir un service appelé "Cardiofréquencemètre" qui inclut des caractéristiques telles que "mesure de la fréquence cardiaque". Vous trouverez la liste des profils et services basés sur GATT sur bluetooth.org.
Rôles et responsabilités
Lorsqu'un appareil interagit avec un appareil BLE, les rôles et les responsabilités sont répartis de deux manières différentes:
Central et périphérique Cela s'applique à la connexion BLE elle-même : l'appareil dans le rôle central effectue une analyse à la recherche d'annonces, et l'appareil dans le rôle périphérique diffuse des annonces. Deux appareils qui ne prennent en charge que le rôle de périphérique ne peuvent pas communiquer entre eux, pas plus que deux appareils qui ne prennent en charge que le rôle de central.
Serveur GATT par rapport au client GATT Cela détermine la façon dont les deux appareils communiquent entre eux une fois la connexion établie. L'appareil dans le rôle de client envoie des requêtes de données, et l'appareil dans le rôle de serveur les traite.
Pour comprendre la distinction entre les rôles de central-périphérique et de serveur-client, prenons l'exemple d'un téléphone Android et d'un moniteur d'activité compatible avec la technologie BLE qui renvoie les données des capteurs au téléphone.
Le téléphone (l'appareil central) recherche activement les appareils BLE. Le traceur d'activité (l'périphérique) annonce et attend de recevoir une demande de connexion.
Une fois la connexion établie entre le téléphone et le suivi d'activité, ils commencent à se transférer les métadonnées GATT. Dans ce cas, l'application exécutée sur le téléphone envoie des requêtes de données. Elle agit donc en tant que client GATT. Le moniteur d'activité répond à ces requêtes et agit donc en tant que serveur GATT.
Une autre conception de l'application peut impliquer que le téléphone joue le rôle de serveur GATT à la place. Pour en savoir plus, consultez BluetoothGattServer
.