Android fournit une pile Bluetooth par défaut qui prend en charge à la fois le Bluetooth classique et le Bluetooth Low Energy. Grâce à Bluetooth, les appareils Android peuvent créer des réseaux personnels pour envoyer et recevoir des données avec des appareils Bluetooth à proximité.
Dans Android 4.3 et versions ultérieures, la pile Bluetooth Android offre la possibilité d'implémenter Bluetooth Low Energy (BLE). Pour tirer pleinement parti des API BLE, suivez les exigences Android Bluetooth HCI . Les appareils Android dotés d'un chipset qualifié peuvent implémenter soit Classic Bluetooth, soit Classic Bluetooth et BLE. BLE n'est pas rétrocompatible avec les anciens chipsets Bluetooth.
Sous Android 8.0, la pile Bluetooth native est entièrement qualifiée pour Bluetooth 5. Pour utiliser les fonctionnalités Bluetooth 5 disponibles, l'appareil doit disposer d'un chipset qualifié Bluetooth 5.
Architecture Android
Une application Bluetooth communique avec le processus Bluetooth via Binder. Le processus Bluetooth utilise JNI pour communiquer avec la pile Bluetooth et permet aux développeurs d'accéder à divers profils Bluetooth. Ce schéma montre la structure générale de la pile Bluetooth :
- Cadre d'application
- Au niveau du framework d'application se trouve le code d'application, qui utilise les API android.bluetooth pour interagir avec le matériel Bluetooth. En interne, ce code appelle le processus Bluetooth via le mécanisme Binder IPC.
- Application Bluetooth
- L'application Bluetooth, située dans
packages/modules/Bluetooth/android/app
, est conditionnée en tant qu'application Android et implémente les profils Bluetooth au niveau de la couche de structure Android. Cette application appelle la pile Bluetooth native via JNI. - JNI
- Le code JNI associé à android.bluetooth se trouve dans
packages/modules/Bluetooth/android/app/jni
. Le code JNI appelle la pile Bluetooth lorsque certaines opérations Bluetooth se produisent, par exemple lorsque des appareils sont découverts. - Pile Bluetooth
- La pile Bluetooth par défaut est fournie dans AOSP et se trouve dans
packages/modules/Bluetooth/system
. La pile implémente le Bluetooth HAL générique et le personnalise avec des extensions et des modifications de configuration. - Implémentation du fournisseur
- Les appareils du fournisseur interagissent avec la pile Bluetooth à l’aide du langage HIDL (Hardware Interface Design Language).
HIDL
HIDL définit l'interface entre la pile Bluetooth et l'implémentation du fournisseur. Pour générer les fichiers Bluetooth HIDL, transmettez les fichiers d'interface Bluetooth dans l'outil de génération HIDL. Les fichiers d'interface se trouvent dans hardware/interfaces/bluetooth
.
Développement de pile Bluetooth
La pile Bluetooth Android est une pile Bluetooth pleinement qualifiée. La liste des qualifications se trouve sur le site Web Bluetooth SIG sous le QDID 169365 .
La pile Bluetooth principale réside dans packages/modules/Bluetooth
. Le développement se produit dans AOSP et les contributions sont les bienvenues.
Android 7.x et architecture antérieure
Un service système Bluetooth communique avec la pile Bluetooth via JNI et avec les applications via Binder IPC. Le service système permet aux développeurs d'accéder à divers profils Bluetooth. Ce schéma montre la structure générale de la pile Bluetooth :
- Cadre d'application
- Au niveau du cadre d'application se trouve le code d'application, qui utilise les API android.bluetooth pour interagir avec le matériel Bluetooth. En interne, ce code appelle le processus Bluetooth via le mécanisme Binder IPC.
- Service du système Bluetooth
- Le service système Bluetooth, situé dans
packages/apps/Bluetooth
, est présenté sous forme d'application Android et implémente le service et les profils Bluetooth au niveau de la couche de structure Android. Cette application appelle la couche HAL via JNI. - JNI
- Le code JNI associé à android.bluetooth se trouve dans
packages/apps/Bluetooth/jni
. Le code JNI appelle la couche HAL et reçoit des rappels de la part de HAL lorsque certaines opérations Bluetooth se produisent, par exemple lorsque des appareils sont découverts. - HAL
- La couche d'abstraction matérielle définit l'interface standard à laquelle les API android.bluetooth et le processus Bluetooth font appel et que vous devez implémenter pour que votre matériel Bluetooth fonctionne correctement. Le fichier d'en-tête du HAL Bluetooth est
hardware/libhardware/include/hardware/bluetooth.h
. De plus, examinez tous les fichiershardware/libhardware/include/hardware/bt_*.h
- Pile Bluetooth
- La pile Bluetooth par défaut vous est fournie et se trouve dans
system/bt
. La pile implémente le Bluetooth HAL générique et le personnalise avec des extensions et des modifications de configuration. - Extensions de fournisseur
- Pour ajouter des extensions personnalisées et une couche HCI pour le traçage, vous pouvez créer un module libbt-vendor et spécifier ces composants.
Implémentation du HAL
Le HAL Bluetooth se trouve dans /hardware/libhardware/include/hardware/bluetooth.h
. Le fichier bluetooth.h
contient l'interface de base de la pile Bluetooth et vous devez implémenter ses fonctions.
Les fichiers spécifiques au profil se trouvent dans le même répertoire. Pour plus de détails, consultez la référence du fichier HAL .