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,["Android provides a default Bluetooth stack that supports both Classic\nBluetooth and Bluetooth Low Energy (BLE). Using Bluetooth, Android devices\ncan create personal area networks to send and receive data with nearby\nBluetooth devices.\n\nIn Android 4.3 and higher, the Android Bluetooth stack provides the ability\nto implement BLE. To fully use the BLE APIs, follow the\n[Android Bluetooth HCI Requirements](/docs/core/connect/bluetooth/hci_requirements).\nAndroid devices with a qualified chipset can implement either Classic\nBluetooth or both Classic Bluetooth and BLE. BLE isn't backward compatible\nwith older Bluetooth chipsets.\n\nIn Android 8.0, the Bluetooth stack is fully qualified for Bluetooth 5. To\nuse available Bluetooth 5 features, the device needs to have a Bluetooth 5\nqualified chipset.\n\nAndroid architecture\n\nA Bluetooth app communicates with the Bluetooth process through Binder. The\nBluetooth process uses Java Native Interface (JNI) to communicate with the\nBluetooth stack and provides developers with access to various Bluetooth\nprofiles. This diagram shows the general structure of the Bluetooth stack:\n\n**Figure 1.** Android Bluetooth architecture.\n\napp framework\n: At the app framework level is app code, which uses the\n [`android.bluetooth`](http://developer.android.com/reference/android/bluetooth/package-summary)\n APIs to interact with the Bluetooth hardware. Internally, this code calls\n the Bluetooth process through the Binder IPC mechanism.\n\nBluetooth app\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\n Android framework layer. This app calls into the Bluetooth stack through\n JNI.\n\nJNI\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\n devices are discovered.\n\nBluetooth stack\n: The default Bluetooth stack is provided in AOSP and is located in\n `packages/modules/Bluetooth/system`. The stack implements the generic\n Bluetooth HAL and customizes it with extensions and configuration changes.\n\nvendor implementation\n: Vendor devices interact with the Bluetooth stack using the HAL interface\n definition language (HIDL).\n\nHIDL\n\n[HIDL](/docs/core/architecture/hidl) defines the interface between the\nBluetooth stack and the vendor implementation. To generate the Bluetooth\nHIDL files, pass the Bluetooth interface files into the HIDL generation\ntool. The interface files are located in\n[`hardware/interfaces/bluetooth`](https://android.googlesource.com/platform/hardware/interfaces/+/android16-release/bluetooth/).\n\nBluetooth stack development\n\nThe Android Bluetooth stack is a fully qualified Bluetooth stack. The\nqualification listing is on the Bluetooth SIG website (requires sign-in)\nunder [QDID 169365](https://launchstudio.bluetooth.com/ListingDetails/130825).\n\nThe core Bluetooth stack resides in\n[`packages/modules/Bluetooth`](https://cs.android.com/android/platform/superproject/+/android-latest-release:packages/modules/Bluetooth/).\nDevelopment happens in AOSP, and contributions are welcome."]]