Google is committed to advancing racial equity for Black communities. See how.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Bluetooth

Icono de Android Bluetooth HAL

Android proporciona una pila de Bluetooth predeterminada que admite Bluetooth clásico y Bluetooth de bajo consumo. 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 Bluetooth de Android ofrece la capacidad 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 conjunto de chips calificado pueden implementar Bluetooth clásico o Bluetooth clásico y BLE. BLE no es compatible con versiones anteriores de chipsets Bluetooth más antiguos.

En Android 8.0, la pila de Bluetooth nativa está completamente calificada para Bluetooth 5. Para usar las funciones de Bluetooth 5 disponibles, el dispositivo debe tener un conjunto de chips calificado para Bluetooth 5.

Arquitectura de Android 8.0

Una aplicación de Bluetooth se comunica con el proceso de 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 de Bluetooth:

Arquitectura Bluetooth de Android 8.0
Figura 1. Arquitectura Bluetooth de Android 8.0
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 de Bluetooth. Internamente, este código llama al proceso de Bluetooth a través del mecanismo Binder IPC.
Servicio de sistema Bluetooth
El servicio del sistema Bluetooth, ubicado en packages/apps/Bluetooth , está empaquetado como una aplicación de Android e implementa los servicios y perfiles de Bluetooth en la capa de marco de Android. Esta aplicación llama a la pila nativa de Bluetooth 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 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 system/bt . La pila implementa el HAL de Bluetooth genérico y lo personaliza con extensiones y cambios de configuración.
Implementación del proveedor
Los dispositivos de los proveedores interactúan con la pila de Bluetooth utilizando 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 de Bluetooth a la herramienta de generación de HIDL. Los archivos de interfaz se encuentran en hardware/interfaces/bluetooth .

Desarrollo de pila Bluetooth

La pila Bluetooth de Android 8.0 es una pila Bluetooth totalmente calificada. La lista de calificación se encuentra en el sitio web de Bluetooth SIG con QDID 97584 .

La pila central de Bluetooth reside en system/bt . El desarrollo ocurre en AOSP y las contribuciones son bienvenidas.

Android 7.xy arquitectura anterior

Un servicio de sistema Bluetooth se comunica con la pila Bluetooth a través de JNI y con 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 de Bluetooth:

Arquitectura Bluetooth de Android
Figura 2. Android 7.xy arquitectura Bluetooth anterior
Marco de aplicación
En el nivel del marco de la aplicación se encuentra el código de la aplicación, que utiliza las API de android.bluetooth para interactuar con el hardware de Bluetooth. Internamente, este código llama al proceso de Bluetooth a través del mecanismo Binder IPC.
Servicio de 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 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 hardware/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 HAL de Bluetooth genérico y lo personaliza con extensiones y cambios de configuración.
Extensiones de proveedores
Para agregar extensiones personalizadas y una capa HCI para el seguimiento, puede crear un módulo libbt-vendor y especificar estos componentes.

Implementación de 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 de Bluetooth y 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 .