A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release
en lugar de aosp-main
para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Bluetooth
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
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 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.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-08-22 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-08-22 (UTC)"],[],[],null,["# Bluetooth\n\nAndroid provides a default Bluetooth stack that supports both Classic Bluetooth and Bluetooth\nLow Energy (BLE). Using Bluetooth, Android devices can create personal area networks to send\nand receive data with nearby Bluetooth devices.\n\n\nIn Android 4.3 and higher, the Android Bluetooth stack provides the ability to implement\nBLE. To fully use the BLE APIs, follow the\n[Android Bluetooth HCI Requirements](/docs/core/connect/bluetooth/hci_requirements). Android devices with a qualified chipset can implement either Classic Bluetooth or both\nClassic Bluetooth and BLE. BLE isn't backward compatible with older Bluetooth chipsets.\n\n\nIn Android 8.0, the Bluetooth stack is fully qualified for Bluetooth 5. To use\navailable Bluetooth 5 features, the device needs to have a Bluetooth 5 qualified chipset.\n\nAndroid architecture\n--------------------\n\n\nA Bluetooth app communicates with the Bluetooth process through Binder. The Bluetooth\nprocess uses Java Native Interface (JNI) to communicate with the Bluetooth stack and provides\ndevelopers with access to various Bluetooth profiles. This diagram shows the general\nstructure of the Bluetooth stack:\n\n**Figure 1.** Android Bluetooth architecture.\n\napp framework\n:\n At the app framework level is app code, which uses the\n [`android.bluetooth`](http://developer.android.com/reference/android/bluetooth/package-summary.html)\n APIs to interact with the Bluetooth hardware. Internally, this code calls the Bluetooth\n process through the Binder IPC mechanism.\n\nBluetooth app\n:\n The Bluetooth app, located in `packages/modules/Bluetooth/android/app`,\n is packaged as an Android app and implements the Bluetooth profiles at the Android framework\n layer. This app calls into the Bluetooth stack through JNI.\n\nJNI\n:\n The JNI code associated with `android.bluetooth` is located in\n `packages/modules/Bluetooth/android/app/jni`. The JNI code calls into the\n Bluetooth stack when certain Bluetooth operations occur, such as when devices are\n discovered.\n\nBluetooth stack\n:\n The default Bluetooth stack is provided in AOSP and is located in\n `packages/modules/Bluetooth/system`. The stack implements the generic Bluetooth\n HAL and customizes it with extensions and configuration changes.\n\nvendor implementation\n:\n Vendor devices interact with the Bluetooth stack using the HAL interface definition\n language (HIDL).\n\n### HIDL\n\n\n[HIDL](/docs/core/architecture/hidl) defines the interface between the\nBluetooth stack and the vendor implementation. To generate the Bluetooth HIDL files, pass the\nBluetooth interface files into the HIDL generation tool. The interface files are located in\n[`hardware/interfaces/bluetooth`](https://android.googlesource.com/platform/hardware/interfaces/+/android16-release/bluetooth/).\n\n### Bluetooth stack development\n\n\nThe Android Bluetooth stack is a fully qualified Bluetooth stack. The qualification listing is\non the Bluetooth SIG website (requires sign-in) under\n[QDID 169365](https://launchstudio.bluetooth.com/ListingDetails/130825).\n\n\nThe core Bluetooth stack resides in\n[packages/modules/Bluetooth](https://cs.android.com/android/platform/superproject/+/android-latest-release:packages/modules/Bluetooth/). Development happens in AOSP, and contributions are welcome."]]