Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
Black Friday: -25€ dès 75€ sur les livres en ligne, vidéos... avec le code BWEEK25. J'en profite !
  1. Livres et vidéos
  2. Android
  3. Objets connectés
Extrait - Android Guide de développement d'applications Java pour Smartphones et Tablettes (4e édition)
Extraits du livre
Android Guide de développement d'applications Java pour Smartphones et Tablettes (4e édition) Revenir à la page d'achat du livre

Objets connectés

Introduction

Révolution annoncée, les objets connectés envahissent progressivement notre environnement technologique. Bracelets capteurs d’activité, périphériques multimédias, ampoules connectées, pèse-personnes, etc., tous ces objets prennent avantage de la technologie Bluetooth Low Energy pour communiquer avec nos smartphones et tablettes.

En effet, si la technologie Bluetooth classique permet la communication entre deux appareils non connectés physiquement entre eux, elle ne peut pas être utilisée dans tous les cas : la consommation d’énergie nécessaire est trop importante.

Pour résoudre ce problème, la société Nokia a présenté en 2006 un protocole basé sur Bluetooth, mais nécessitant moins de puissance pour fonctionner. Ce protocole a ensuite été réintégré au protocole Bluetooth, en 2010, sous les désignations Bluetooth Low Energy (on utilise alors le sigle BLE) ou Bluetooth Smart.

La très faible consommation électrique du BLE, couplée à une portée respectable d’une centaine de mètres en terrain découvert, a permis à l’industrie de mettre au point plusieurs dispositifs communicants, tels les beacons (balises, en français), et ainsi fournir un ensemble de fonctionnalités innovantes....

Détection et connexion

Pour communiquer en utilisant la technologie BLE, une application doit, au préalable, respecter les étapes suivantes :

  • Détecter l’appareil BLE avec lequel communiquer. Cette étape est communément nommée Scan.

  • Appairer le terminal Android avec l’appareil BLE. C’est l’étape de connexion.

Ces deux étapes sont explicitées dans la section courante tandis que la communication sera, elle, abordée dans la section suivante.

1. Permissions

Pour utiliser la technologie BLE, l’application doit déclarer la permission BLUETOOTH dans le fichier de manifeste.

<uses-permission android:name="android.permission.BLUETOOTH"/> 

En outre, dans le cas où l’application souhaite détecter un périphérique BLE, ou communiquer avec celui-ci, elle doit également disposer de l’autorisation BLUETOOTH_ADMIN :

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> 

Même si cela n’est pas précisé ici, il faut veiller à appliquer le nouveau principe de fonctionnement des permissions si l’application doit cibler Android 6. Pour une présentation complète, se référer au chapitre Concurrence, sécurité et réseau, section Sécurité et droits.

2. Initialisation

L’accès aux fonctionnalités BLE par Android se fait en utilisant un objet de type BluetoothManager, du package android.bluetooth. Cet objet s’obtient en invoquant la méthode getSystemService de la classe Context, le service étant ici Context.BLUETOOTH_SERVICE.

Exemple

BluetoothManager bluetoothManager=     
(BluetoothManager)getSystemService(Context.BLUETOOTH_SERVICE); 

Pour ensuite pouvoir manipuler l’adaptateur BLE du terminal, l’API expose la classe BluetoothAdapter, qui va porter l’essentiel des opérations de connexion/déconnexion de la liaison BLE.

C’est l’instance de BluetoothManager qui fournit cet objet Bluetooth-Adapter, via la méthode getAdapter.

Exemple

BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter(); 

Même si les fonctionnalités Bluetooth sont disponibles sur un terminal, il est indispensable de s’assurer que celles-ci n’ont pas été désactivées...

Échange de données/interactions

Les interactions entre un objet BLE et un terminal Android se matérialisent par des opérations de lecture et d’écriture. Ces opérations reposent toutes sur le même schéma : la lecture (ou l’écriture) est faite par l’instance de BluetoothGatt, qui représente l’objet BLE, et le résultat est géré en appel retour par l’instance de BluetoothGattCallback.

Les données exposées par l’objet BLE, qu’elles soient en lecture seule ou en lecture/écriture, sont appelées Characteristic (caractéristiques). Chaque caractéristique est identifiée par un identifiant unique universel (UUID, soit en anglais Universally Unique Identifier), attribué par le consortium responsable de la norme BLE.

Les caractéristiques sont regroupées par service, un service pouvant contenir une ou plusieurs caractéristiques. Chaque service est également identifié par un UUID.

Cette organisation se retrouve dans l’API BLE fournie par Android. Pour accéder à une caractéristique, il faut au préalable obtenir une référence sur le service correspondant. 

1. Découvrir les services

Tous les objets BLE ne proposent pas les mêmes fonctionnalités. Si un bracelet connecté expose, par exemple, la mesure du rythme cardiaque de son porteur, cette information n’est certainement pas proposée par une ampoule connectée !

En conséquence, la plateforme ne peut pas présumer des services qui seront disponibles sur un objet BLE appairé au terminal Android.

Pour pouvoir accéder à un service, il est donc nécessaire de vérifier sa disponibilité sur l’objet BLE. Pour cela, la classe BluetoothGatt fournit la méthode discoverServices, qui a pour fonction de « découvrir » tous les services disponibles sur l’objet BLE connecté.

Syntaxe

public boolean discoverServices () 

La méthode renvoie un booléen, qui précise si la découverte des services a effectivement été lancée. L’appel retour de la méthode discoverServices est assuré par l’instance de BluetoothGattCallback. C’est...