Bluetooth

Ícono del HAL de Bluetooth de Android

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:

Diagrama que muestra las capas de la pila de Bluetooth de Android.

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 en packages/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.