![Icono HAL Bluetooth de Android](https://source.android.com/static/docs/core/connect/bluetooth/images/ape_fwk_hal_bluetooth.png?authuser=5&hl=es)
Android proporciona una pila Bluetooth predeterminada que admite Bluetooth clásico y Bluetooth de bajo consumo. Al utilizar Bluetooth, los dispositivos Android pueden crear redes de área personal para enviar y recibir datos con dispositivos Bluetooth cercanos.
En Android 4.3 y posteriores, la pila Bluetooth de Android ofrece la posibilidad de implementar Bluetooth Low Energy (BLE). Para aprovechar al máximo las API de BLE, siga los requisitos de HCI de Bluetooth de Android . Los dispositivos Android con un chipset calificado pueden implementar Bluetooth clásico o Bluetooth clásico y BLE. BLE no es compatible con versiones anteriores de conjuntos de chips Bluetooth más antiguos.
En Android 8.0, la pila Bluetooth nativa está totalmente calificada para Bluetooth 5. Para utilizar las funciones de Bluetooth 5 disponibles, el dispositivo debe tener un conjunto de chips calificado para Bluetooth 5.
arquitectura de Android
Una aplicación Bluetooth se comunica con el proceso Bluetooth a través de Binder. El proceso de Bluetooth utiliza JNI para comunicarse con la pila de Bluetooth y proporciona a los desarrolladores acceso a varios perfiles de Bluetooth. Este diagrama muestra la estructura general de la pila Bluetooth:
![Arquitectura Bluetooth de Android](https://source.android.com/static/docs/core/connect/bluetooth/images/fluoride_architecture.png?authuser=5&hl=es)
- Marco de aplicación
- En el nivel del marco de la aplicación está el código de la aplicación, que utiliza las API de android.bluetooth para interactuar con el hardware Bluetooth. Internamente, este código llama al proceso Bluetooth a través del mecanismo Binder IPC.
- aplicación bluetooth
- La aplicación Bluetooth, ubicada en
packages/modules/Bluetooth/android/app
, está empaquetada como una aplicación de Android e implementa los perfiles de Bluetooth en la capa del marco de Android. Esta aplicación llama a la pila Bluetooth nativa 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 ocurren ciertas operaciones de Bluetooth, como cuando se descubren dispositivos. - pila de bluetooth
- La pila de Bluetooth predeterminada se proporciona en AOSP y se encuentra en
packages/modules/Bluetooth/system
. La pila implementa el Bluetooth HAL genérico y lo personaliza con extensiones y cambios de configuración. - Implementación de proveedores
- Los dispositivos de los proveedores interactúan con la pila Bluetooth mediante el lenguaje de diseño de interfaz de hardware (HIDL).
HIDL
HIDL define la interfaz entre la pila de Bluetooth y la implementación del proveedor. Para generar los archivos HIDL de Bluetooth, pase los archivos de la interfaz Bluetooth a la herramienta de generación HIDL. Los archivos de interfaz se encuentran en hardware/interfaces/bluetooth
.
Desarrollo de pila Bluetooth
La pila Bluetooth de Android es una pila Bluetooth totalmente calificada. La lista de calificaciones se encuentra en el sitio web de Bluetooth SIG con QDID 169365 .
La pila principal de Bluetooth reside en packages/modules/Bluetooth
. El desarrollo ocurre en AOSP y las contribuciones son bienvenidas.
Android 7.x y arquitectura anterior
Un servicio del sistema Bluetooth se comunica con la pila Bluetooth a través de JNI y con las aplicaciones a través de Binder IPC. El servicio del sistema proporciona a los desarrolladores acceso a varios perfiles de Bluetooth. Este diagrama muestra la estructura general de la pila Bluetooth:
![Arquitectura Bluetooth de Android](https://source.android.com/static/docs/core/connect/bluetooth/images/ape_fwk_bluetooth.png?authuser=5&hl=es)
- Marco de aplicación
- En el nivel del marco de la aplicación está el código de la aplicación, que utiliza las API de android.bluetooth para interactuar con el hardware Bluetooth. Internamente, este código llama al proceso Bluetooth a través del mecanismo Binder IPC.
- Servicio del sistema Bluetooth
- El servicio del sistema Bluetooth, ubicado en
packages/apps/Bluetooth
, está empaquetado como una aplicación de Android e implementa el servicio y los perfiles de Bluetooth en la capa del marco de Android. Esta aplicación llama a la capa HAL a través de JNI. - JNI
- El código JNI asociado con android.bluetooth se encuentra en
packages/apps/Bluetooth/jni
. El código JNI llama a la capa HAL y recibe devoluciones de llamada de HAL cuando ocurren ciertas operaciones de Bluetooth, como cuando se descubren dispositivos. - HAL
- La capa de abstracción de hardware define la interfaz estándar a la que llaman las API de android.bluetooth y el proceso de Bluetooth y que usted debe implementar para que su hardware Bluetooth funcione correctamente. El archivo de encabezado para Bluetooth HAL es
hardware/libhardware/include/hardware/bluetooth.h
. Además, revise todos los archivoshardware/libhardware/include/hardware/bt_*.h
. - pila de bluetooth
- La pila Bluetooth predeterminada se le proporciona y se encuentra en
system/bt
. La pila implementa el Bluetooth HAL genérico y lo personaliza con extensiones y cambios de configuración. - Extensiones de proveedores
- Para agregar extensiones personalizadas y una capa HCI para seguimiento, puede crear un módulo libbt-vendor y especificar estos componentes.
Implementando el HAL
El HAL de Bluetooth se encuentra en /hardware/libhardware/include/hardware/bluetooth.h
. El archivo bluetooth.h
contiene la interfaz básica para la pila Bluetooth y usted debe implementar sus funciones.
Los archivos específicos del perfil se encuentran en el mismo directorio. Para obtener más información, consulte la referencia del archivo HAL .