The Bluetooth module is an optional Mainline module introduced in Android 13. In Android 16 and higher, the module is updatable and contains a fully certified dual-mode Bluetooth host stack, enabling Android devices to support both classic Bluetooth and Bluetooth Low Energy (BLE) functionalities.
The primary motivation for the Bluetooth module is to provide a higher-quality Bluetooth experience to device manufacturers, users, and app developers by:
Delivering faster updates with new features, bug fixes, interoperability enhancements, and security patches quickly and regularly, independently of the Android OS release cycle.
Reducing fragmentation and creating a consistent experience for the entire Android ecosystem.
Streamlining partner development by delivering Android-validated Bluetooth Mainline modules and avoiding frequent rebasing, thus reducing development and testing overhead.
Package format
The Bluetooth module uses the APEX format. The com.google.android.bt
package contains the Bluetooth APK defined in
packages/modules/Bluetooth/android/app
, the built-in library
libbluetooth_jni.so
, the APIs under
packages/modules/Bluetooth/framework/java/android/bluetooth
, and the HIDL
interfaces.
Module boundary
The following diagram shows the Bluetooth module boundary:
Figure 1. Bluetooth module boundary.
Dependencies
The Bluetooth module has dependencies on the following:
- Incoming and outgoing
@hide
API usages - Library required for the Bluetooth APK (
libbluetooth.so
). - HAL implementation from the Bluetooth chipset provider
- Android Audio Framework for audio streaming
- Android telephony for phone calls
- Android tethering for Bluetooth Personal Area Network (PAN)