
Android proporciona una pila de Bluetooth predeterminada que admite tanto Bluetooth clásico como Bluetooth de bajo consumo (BLE). Con Bluetooth, los dispositivos Android pueden crear redes de área personal para enviar y recibir datos con dispositivos Bluetooth cercanos.
En Android 4.3 y versiones posteriores, la pila de Bluetooth de Android proporciona la capacidad de implementar BLE. Para usar las APIs de BLE por completo, sigue los Requisitos de HCI de Bluetooth para Android. Los dispositivos Android con un chipset calificado pueden implementar Bluetooth clásico o Bluetooth clásico y BLE. BLE no es retrocompatible con los chipsets de Bluetooth más antiguos.
En Android 8.0, la pila de Bluetooth está completamente calificada para Bluetooth 5. Para usar las funciones disponibles de Bluetooth 5, el dispositivo debe tener un chipset calificado para Bluetooth 5.
Arquitectura de Android
Una app de Bluetooth se comunica con el proceso de Bluetooth a través de Binder. El proceso de Bluetooth usa la interfaz nativa de Java (JNI) para comunicarse con la pila de Bluetooth y proporciona a los desarrolladores acceso a varios perfiles de Bluetooth. En este diagrama, se muestra la estructura general de la pila de Bluetooth:
Figura 1: Arquitectura de Bluetooth de Android
- Marco de trabajo de la app
-
A nivel del framework de la app, se encuentra el código de la app, que usa las APIs de
android.bluetooth
para interactuar con el hardware de Bluetooth. Internamente, este código llama al proceso de Bluetooth a través del mecanismo de IPC de Binder. - App de Bluetooth
-
La app de Bluetooth, ubicada en
packages/modules/Bluetooth/android/app
, se empaqueta como una app para Android y, además, implementa los perfiles de Bluetooth en la capa del framework de Android. Esta app llama a la pila de Bluetooth a través de JNI. - JNI
-
El código JNI asociado con
android.bluetooth
se encuentra enpackages/modules/Bluetooth/android/app/jni
. El código JNI llama a la pila de Bluetooth cuando se producen ciertas operaciones de Bluetooth, como cuando se detectan dispositivos. - Pila de Bluetooth
-
La pila de Bluetooth predeterminada se proporciona en el AOSP y se encuentra en
packages/modules/Bluetooth/system
. La pila implementa el HAL genérico de Bluetooth y lo personaliza con extensiones y cambios de configuración. - Implementación del proveedor
- Los dispositivos del proveedor interactúan con la pila de Bluetooth a través del lenguaje de definición de la interfaz de HAL (HIDL).
HIDL
HIDL define la interfaz entre la pila de Bluetooth y la implementación del proveedor. Para generar los archivos HIDL de Bluetooth, pasa los archivos de interfaz de Bluetooth a la herramienta de generación de HIDL. Los archivos de interfaz se encuentran en hardware/interfaces/bluetooth
.
Desarrollo de la pila de Bluetooth
La pila Bluetooth de Android es una pila Bluetooth completamente calificada. La lista de calificación se encuentra en el sitio web de Bluetooth SIG (se requiere acceso) en QDID 169365.
La pila de Bluetooth principal reside en
packages/modules/Bluetooth
. El desarrollo se realiza en AOSP y aceptamos contribuciones.