
Android fournit une pile Bluetooth par défaut qui prend en charge à la fois le Bluetooth classique et le Bluetooth Low Energy. À l'aide de 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 le Bluetooth classique ou à la fois le Bluetooth classique et le BLE. BLE n'est pas rétrocompatible avec les anciens chipsets Bluetooth.
Dans 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 Bluetooth 5 qualifié.
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 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.
- Entretien du système Bluetooth
- Le service système Bluetooth, situé dans
packages/apps/Bluetooth
, est présenté sous la forme d'une application Android et implémente les services et 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/apps/Bluetooth/jni
. Le code JNI appelle la pile Bluetooth lorsque certaines opérations Bluetooth se produisent, par exemple lorsque des périphériques sont découverts. - Pile Bluetooth
- La pile Bluetooth par défaut est fournie dans AOSP et se trouve dans
system/bt
. La pile implémente la HAL Bluetooth générique et la personnalise avec des extensions et des modifications de configuration. - Mise en œuvre du fournisseur
- Les appareils du fournisseur interagissent avec la pile Bluetooth à l'aide du langage de conception d'interface matérielle (HIDL).
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 la pile Bluetooth
La pile Bluetooth Android est une pile Bluetooth entièrement qualifiée. La liste des qualifications se trouve sur le site Web Bluetooth SIG sous QDID 169365 .
La pile Bluetooth principale réside dans system/bt
. Le développement se passe 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.
- Entretien du système Bluetooth
- Le service système Bluetooth, situé dans
packages/apps/Bluetooth
, est présenté sous la forme d'une 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 couche HAL lorsque certaines opérations Bluetooth se produisent, comme lorsque des appareils sont découverts. - HAL
- La couche d'abstraction matérielle définit l'interface standard dans laquelle les API android.bluetooth et le processus Bluetooth appellent et que vous devez implémenter pour que votre matériel Bluetooth fonctionne correctement. Le fichier d'en-tête de la couche HAL Bluetooth est
hardware/libhardware/include/hardware/bluetooth.h
. De plus, passez en revue tous leshardware/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 la HAL Bluetooth générique et la 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 de la HAL
La couche 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 de fichier HAL .