Bluetooth à basse consommation

Android fournit une compatibilité intégrée de la plate-forme avec le Bluetooth à basse consommation (BLE) dans le rôle central et fournit des API que les applications peuvent utiliser pour détecter des appareils, interroger des services et transmettre des informations.

Voici quelques cas d'utilisation courants:

  • Transférer 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, le BLE est conçu pour réduire considérablement la consommation d'énergie. Cela permet aux applications de communiquer avec les appareils BLE ayant des exigences d'alimentation plus strictes, 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 via la technologie BLE, les données communiquées entre les deux appareils sont accessibles à toutes les applications de l'appareil de l'utilisateur.

Par conséquent, si votre application capture des données sensibles, vous devez mettre en œuvre la sécurité au niveau de la couche d'application afin de protéger la confidentialité de ces données.

Principes de base

Pour que les appareils compatibles 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 au 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 qu'un appareil BLE est détecté, ses fonctionnalités sont découvertes en se connectant au serveur GATT sur 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

Voici un résumé 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 courts éléments de données appelés "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 particulière. Notez qu'un appareil peut implémenter plusieurs profils. Par exemple, un appareil peut contenir un moniteur de fréquence cardiaque et un détecteur de niveau de batterie.
  • Protocole ATT (Attribute Protocol)
    GATT s'appuie sur le protocole ATT (Attribute Protocol). Également appelé GATT/ATT. La fonctionnalité ATT est optimisée pour fonctionner sur les appareils BLE. À cette fin, il utilise le moins d'octets possible. Chaque attribut est identifié de manière unique par un identifiant unique universel (UUID), qui est un format standardisé de 128 bits pour un ID de chaîne permettant d'identifier de manière unique des informations. Les attributs transportés par l'ATT sont mis en forme en tant que caractéristiques et services.
  • Caractéristique
    Une caractéristique contient une valeur unique et des descripteurs de 0-n décrivant sa valeur. Une caractéristique peut être considérée comme un type, analogue à une classe.
  • Descripteur
    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'humain, 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é "Moniteur de fréquence cardiaque" qui inclut des caractéristiques telles que la "mesure de la fréquence cardiaque". Vous trouverez une liste des profils et services GATT existants sur bluetooth.org.

Rôles et responsabilités

Les rôles et responsabilités suivants s'appliquent lorsqu'un appareil interagit avec un appareil BLE:

  • Centrale ou périphérique. Cela s'applique à la connexion BLE elle-même. L'appareil situé dans le rôle central recherche une publicité, et l'appareil du rôle périphérique effectue la publicité.

  • Comparaison entre le serveur GATT et le client GATT. Cela détermine la façon dont deux appareils communiquent entre eux une fois la connexion établie. Pour bien comprendre cette distinction, imaginez que vous disposez d'un téléphone Android et d'un moniteur d'activité physique compatible BLE. Le téléphone prend en charge le rôle central, tandis que le suivi d'activité prend en charge le rôle périphérique. Pour établir une connexion BLE, vous avez besoin d'une connexion de chaque type. Deux éléments qui ne sont compatibles qu'avec un périphérique ne peuvent pas communiquer entre eux, ni deux éléments qui ne sont compatibles qu'avec un périphérique central.

Une fois la connexion établie entre le téléphone et le moniteur d'activité, ils commencent à transférer les métadonnées GATT entre eux. Selon le type de données qu'ils transfèrent, l'un ou l'autre peut agir en tant que serveur. Par exemple, si le traceur d'activité souhaite transmettre les données des capteurs au téléphone, il peut être judicieux qu'il agisse en tant que serveur. Si le traceur d'activité souhaite recevoir des mises à jour du téléphone, il peut être judicieux que le téléphone agisse en tant que serveur.

Dans l'exemple utilisé dans cette rubrique, l'application (s'exécutant sur un appareil Android) est le client GATT. L'application obtient les données du serveur GATT, qui est un moniteur de fréquence cardiaque BLE compatible avec le profil de fréquence cardiaque. Vous pouvez également concevoir votre application pour qu'elle joue le rôle de serveur GATT. Pour en savoir plus, consultez BluetoothGattServer.