Comment annoncer Android en tant que périphérique Bluetooth LE

Bien qu’il s’agisse d’une technologie relativement nouvelle, Bluetooth Low Energy (LE) s’est déjà avéré être un moyen de communication polyvalent et utile. Bien qu’il puisse être utilisé pour connecter des appareils entre eux sans fil, il permet également aux appareils d’agir comme des balises et de diffuser des données.

Dans ce didacticiel, vous découvrirez les BluetoothLeAdvertiser classe, qui permet aux développeurs de transformer un téléphone pris en charge en balise Bluetooth LE sans avoir besoin de matériel supplémentaire. Vous apprendrez également à rechercher des données publicitaires Bluetooth LE afin de pouvoir réagir de manière appropriée dans vos propres applications. Vous pouvez télécharger les fichiers source de ce didacticiel sur GitHub.

1. Configuration du projet

Pour ce didacticiel, vous pouvez commencer par créer un projet vide de base dans Android Studio. Vous devez définir la version minimale du SDK sur 21 dans ton build.gradle fichier, car la publicité Bluetooth LE n’a été introduite sur Android qu’à la sortie de Lollipop. Bien qu’il existe des moyens d’encapsuler les API qui ne sont pas pris en charge avant le SDK 21, ils ne seront pas traités dans ce didacticiel. Nous allons nous concentrer uniquement sur la nouvelle technologie disponible.

Ensuite, vous devez ajouter trois autorisations au projet AndroidManifest.xml. Les deux premiers permettent la communication Bluetooth et la troisième autorisation, ACCESS_COARSE_LOCATION, est une nouvelle exigence pour l’utilisation de Bluetooth sur les appareils Android 6.0 et supérieurs.

Si vous développez sur un appareil qui exécute Android 6.0 ou version ultérieure, votre application a besoin de l’autorisation de localisation accordée par l’utilisateur. Vous trouverez des instructions pour ce faire dans Comprendre les autorisations dans Android M, que j’ai écrit plus tôt cette année. Par souci de simplicité, ce didacticiel accordera simplement l’autorisation à partir de l’écran Informations sur l’application Android.

Écran des autorisations de l'application Android affichant l'autorisation de localisation accordée

Maintenant que vous êtes autorisé à accéder à tout ce dont votre application aura besoin, il est temps de créer le fichier de mise en page. Ouvert activity_main.xml et créez une mise en page simple avec deux boutons et une vue de texte.

Les deux Button les objets sont utilisés pour démarrer la publication ou la découverte. le TextView est utilisé pour afficher les données trouvées lors de la découverte. Lorsque vous avez terminé de remplir le fichier de mise en page, vous pouvez le fermer et ouvrir MainActivity.java. La première chose que vous faites dans ce fichier est d’ajouter l’implémentation pour View.OnClickListener qui est utilisé par les boutons.

Au dessus onClick(View v) méthode, advertise() et discover() sont définis plus loin dans ce didacticiel. Vous pouvez maintenant ajouter des stubs pour ces méthodes afin que votre application se compile. Ensuite, vous devez créer des variables membres en haut de la classe pour garder une trace des boutons et de la vue texte.

Une fois vos vues définies, vous devez les initialiser dans onCreate(Bundle savedInstanceState) et câbler chacun Button jusqu’à la OnClickListener vous avez défini plus tôt.

Enfin, assurez-vous que l’appareil que vous ou vos utilisateurs utilisez prend en charge plusieurs publicités. Alors que les fonctionnalités logicielles nécessaires à la publicité en tant que périphérique sont disponibles chez Lollipop, les fabricants doivent également utiliser un chipset Bluetooth qui peut prendre en charge la publicité.

En relation :  Comment déplacer des onglets entre Android et PC

Si la publicité Bluetooth LE n’est pas prise en charge, vous devez désactiver les deux boutons de votre application. Bien que cette fonctionnalité soit connue pour fonctionner sur les Nexus 6, 5X, 6P et 9, il existe d’autres téléphones qui prennent également en charge la publicité Bluetooth LE et des appareils supplémentaires continueront d’être fabriqués à mesure que les fabricants créent de nouveaux téléphones et tablettes.

2. Publicité via Bluetooth LE

Pour commencer à diffuser des annonces via Bluetooth LE, vous devez récupérer le BluetoothLeAdvertiser depuis l’Android BluetoothAdapter. Vous pouvez le faire dans le advertise() méthode qui est appelée lorsque le bouton publicitaire est touché.

Une fois que vous avez votre BluetoothLeAdvertiser, vous définissez les paramètres utilisés lors de la publicité, tels que la quantité d’énergie que l’antenne doit utiliser lors de la diffusion et la fréquence à laquelle l’appareil doit annoncer. le AdvertiseSettings.Builder La classe vous permet également de définir si l’appareil mobile doit être connectable, ce qui vous permet de diffuser beaucoup plus de données sur les appareils.

Vous remarquerez que cet exemple fait de la publicité avec une puissance de signal élevée (puissance TX) et une faible latence. Bien que cela rende votre appareil détectable rapidement, il peut également occuper une grande partie de la batterie, ce qui est un bien précieux lorsque vous développez dans l’espace mobile.

Il existe d’autres options pour le mode publicitaire. le ADVERTISE_MODE_LOW_POWER L’option est le paramètre par défaut pour la publicité et transmet le moins fréquemment afin de conserver le plus d’énergie. le ADVERTISE_MODE_BALANCED L’option tente d’économiser l’énergie sans attendre trop longtemps entre les publicités.

La puissance d’émission peut être réglée sur ultra faible, faible, moyenne ou élevée. Chaque niveau correspond à la distance à laquelle un paquet publicitaire Bluetooth LE sera visible, bien que les plages exactes dépendent du matériel de l’appareil.

Ensuite, vous définissez un UUID qui est utilisé pour identifier vos paquets lorsqu’ils sont publiés. Vous pouvez créer un nouvel UUID en utilisant le uuidgen utilitaire à partir de la ligne de commande.

Alors que cet utilitaire crée un UUID 128 bits, le système Android utilise uniquement des UUID 16 bits pour la publicité et ajuste automatiquement un UUID 128 bits pour se conformer. Dans l’exemple ci-dessus, l’UUID 16 bits serait 950D. Ensuite, enregistrez l’UUID 128 bits sous forme de chaîne dans strings.xml.

Une fois votre UUID créé, il est temps de créer le ParcelUuid, AdvertiseData objet, et diffusez des données supplémentaires en tant que service supplémentaire. Pour cet exemple, vous venez de diffuser le nom de l’appareil et la chaîne "Data" (qui doit être converti en un tableau d’octets) car la taille de vos paquets publicitaires est assez limitée.

La dernière chose que vous faites pour faire de la publicité via Bluetooth LE avec votre appareil est de créer un rappel qui écoute le succès ou l’échec lors de la publicité, puis commencez à faire de la publicité sur le BluetoothLeAdvertiser.

À ce stade, vous devriez pouvoir exécuter votre application et commencer à faire de la publicité via Bluetooth LE. Cependant, l’étape suivante de ce didacticiel passera en revue la découverte de publicités afin que vous puissiez afficher ces informations.

En relation :  10 applications Android hors ligne essentielles pour les personnes sans données mobiles ou Wi-Fi

3. Découvrir les publicités Bluetooth LE

Avant de commencer à découvrir les services Bluetooth LE, vous devez ajouter quelques variables membres supplémentaires en haut de votre classe.

mBluetoothLeScanner est utilisé pour rechercher les paquets Bluetooth LE et mHandler contrôle une petite minuterie qui arrête la découverte après une période de temps définie.

En plus de ces variables membres, vous devez créer un nouveau ScanCallback en haut de votre classe afin de pouvoir y accéder ultérieurement dans votre application par une classe interne. Ce rappel reçoit le résultat d’une publicité acceptable découverte et affiche le nom du dispositif publicitaire et les données associées dans une vue textuelle.

Ensuite, initialisez mBluetoothLeScanner dans onCreate(Bundle savedInstanceState) comme indiqué ci-dessous.

Après avoir initialisé le scanner Bluetooth, vous pouvez commencer à étoffer le discover() méthode. Pour cet exemple d’application, vous créez un ScanFilter objet et placez-le dans un List afin que votre application ne réponde qu’aux paquets publicitaires qui vous intéressent.

Vous devez également créer un ScanSettings objet, qui fonctionne de la même manière que le AdvertiseSettings objet que vous avez créé précédemment dans ce didacticiel.

Une fois vos filtres, paramètres et rappels en place, vous pouvez commencer à découvrir les publicités Bluetooth LE.

Si vous exécutez votre application maintenant sur deux appareils qui prennent à la fois en charge les publicités Bluetooth LE et en définissant l’un pour annoncer et l’autre pour découvrir, l’appareil de détection doit trouver l’annonceur et afficher les données annoncées. La capture d’écran suivante montre un Nexus 5X découvrant un Nexus 6 publicitaire.

Le Nexus 5X découvre des paquets publicitaires Bluetooth LE à partir d'un Nexus 6

La dernière chose à faire est de créer un nouveau Runnable objet et associez-le à mHandler. Le gestionnaire attend dix secondes, puis démarre le Runnable cela arrête la découverte. La raison en est que la découverte peut vider rapidement la batterie de l’appareil. Vous souhaitez uniquement tenter de découvrir des paquets publicitaires pendant de courtes périodes ou lorsque vous prévoyez de trouver un dispositif publicitaire.

Conclusion

Bien que cet exemple ne soit pas grand-chose à regarder, vous venez de créer une application entièrement fonctionnelle qui fait de la publicité via Bluetooth LE afin que d’autres appareils puissent la découvrir et transférer des données. Bien que ce didacticiel ait porté sur la publicité et la découverte avec Android, vous pouvez tout aussi facilement créer une application similaire pour iOS afin de partager des données sur les deux plates-formes ou créer votre propre appareil compatible Bluetooth LE qui peut interagir avec les téléphones mobiles et les tablettes.

Alors que cette technologie continue de croître et d’être intégrée dans les poches de chacun, les développeurs auront des possibilités infinies de créer des choses vraiment intéressantes. Pour plus d’informations sur l’utilisation de la technologie Bluetooth supplémentaire sur Android, consultez Créer un scanner Bluetooth avec l’API Bluetooth d’Android en Matthew Kim.

Moyens Staff
Moyens I/O Staff vous a motivé, donner des conseils sur la technologie, le développement personnel, le style de vie et des stratégies qui vous aider.