Google s'est engagé à promouvoir l'équité raciale pour les communautés noires. Regarde comment.
Cette page a été traduite par l'API Cloud Translation.
Switch to English

Bluetooth

Icône Android Bluetooth HAL

Android fournit une pile Bluetooth par défaut qui prend en charge à la fois Bluetooth classique et 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é de mettre en œuvre 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 le Bluetooth classique, soit le Bluetooth classique 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 Bluetooth 5 qualifié.

Architecture d'Android 8.0

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 diagramme montre la structure générale de la pile Bluetooth:

Architecture Bluetooth Android 8.0
Figure 1. Architecture Bluetooth d'Android 8.0
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 système Bluetooth
Le service système Bluetooth, situé dans les packages/apps/Bluetooth , est conditionné en tant qu'application Android et implémente les services et 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/apps/Bluetooth/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 system/bt . La pile implémente la HAL Bluetooth générique et la 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 à 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 8.0 est une pile Bluetooth entièrement qualifiée. La liste de qualification se trouve sur le site Web Bluetooth SIG sous QDID 97584 .

La pile Bluetooth principale réside dans system/bt . Le développement se fait dans AOSP et les contributions sont les bienvenues.

Architecture Android 7.x et 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 diagramme montre la structure générale de la pile Bluetooth:

Architecture Bluetooth Android
Figure 2. Architecture Bluetooth Android 7.x et antérieure
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 système Bluetooth
Le service système Bluetooth, situé dans les packages/apps/Bluetooth , est conditionné en tant qu'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 du HAL lorsque certaines opérations Bluetooth se produisent, par exemple lorsque des périphériques 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 pour le Bluetooth HAL est hardware/libhardware/include/hardware/bluetooth.h . De plus, examinez tous les hardware/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.

Mise en œuvre du HAL

Le Bluetooth HAL 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 .