State of Bluetooth LE on Android in 2023
summary
Bluetooth LE on Android is usable but brittle: avoid supporting versions below Android 8 (API 26), rely on companion device manager plus a foreground service from Android 12 and register a companion device service to wake the app, and treat the autoConnect flag as “indirect” not a simple retry. Queue every GATT operation with a mutex and timeout (example: coroutine-based queue), never retain BluetoothGattCharacteristic objects, prefer the new memory-safe callbacks introduced in API level 33, and use write type no response or PHY 2M/LE coded only when the device and workflow tolerate the limits.
AI-written summary · about
chapters (10)
- 0:00Start
- 6:02Android BLE requirements
- 7:30Use CompanionDeviceManager
- 12:21Bonding
- 15:03Companion Device Service
- 19:59Two common GATT designs
- 25:29Deprecated callbacks
- 31:10Connection Strategy
- 35:04Long-range, low bandwidth
- 37:35Common pitfalls
related talks
35mState of BLE on Android in 2022
38mBluetooth LE for Modern Android Development
46mBluetooth Low Energy on Android: Top Tips for the Tricky Bits
38mBest Practices for Bluetooth Development
42mAdvanced Bluetooth for Android Developers
31mAn introduction to Bluetooth mesh for Android developers
21mConnecting the bean – The bumpy road of BLE on Android
39mTalking to your bike and other devices (wait, what?)
