
Android предоставляет стек Bluetooth по умолчанию, поддерживающий как классический Bluetooth, так и Bluetooth Low Energy (BLE). Используя Bluetooth, устройства Android могут создавать персональные сети для отправки и получения данных от находящихся поблизости устройств Bluetooth.
В Android 4.3 и выше стек Bluetooth Android предоставляет возможность реализации BLE. Для полного использования API BLE следуйте требованиям Android Bluetooth HCI . Устройства Android с соответствующим чипсетом могут реализовывать либо классический Bluetooth, либо и классический Bluetooth, и BLE. BLE несовместим с более старыми чипсетами Bluetooth.
В Android 8.0 стек Bluetooth полностью соответствует стандарту Bluetooth 5. Для использования доступных функций Bluetooth 5 устройство должно иметь чипсет, совместимый с Bluetooth 5.
архитектура Android
Приложение Bluetooth взаимодействует с процессом Bluetooth через Binder. Процесс Bluetooth использует Java Native Interface (JNI) для связи со стеком Bluetooth и предоставляет разработчикам доступ к различным профилям Bluetooth. На этой диаграмме показана общая структура стека Bluetooth:

Рисунок 1. Архитектура Bluetooth в Android.
- фреймворк приложений
- На уровне фреймворка приложения находится код приложения, который использует API
android.bluetoothдля взаимодействия с оборудованием Bluetooth. Внутри этот код вызывает процесс Bluetooth через механизм межпроцессного взаимодействия Binder. - приложение Bluetooth
- Приложение Bluetooth, расположенное в
packages/modules/Bluetooth/android/app, упаковано как приложение Android и реализует профили Bluetooth на уровне фреймворка Android. Это приложение взаимодействует со стеком Bluetooth через JNI. - JNI
- Код JNI, связанный с
android.bluetooth, находится вpackages/modules/Bluetooth/android/app/jni. Код JNI вызывает стек Bluetooth при выполнении определенных операций Bluetooth, например, при обнаружении устройств. - стек Bluetooth
- Стандартный стек Bluetooth предоставляется в AOSP и находится в
packages/modules/Bluetooth/system. Этот стек реализует универсальный HAL Bluetooth и настраивает его с помощью расширений и изменений конфигурации. - внедрение поставщика
- Устройства производителей взаимодействуют со стеком Bluetooth, используя язык определения интерфейса HAL (HIDL).
HIDL
HIDL определяет интерфейс между стеком Bluetooth и реализацией производителя. Для генерации файлов HIDL для Bluetooth передайте файлы интерфейса Bluetooth в инструмент генерации HIDL. Файлы интерфейса находятся в hardware/interfaces/bluetooth .
разработка стека Bluetooth
Стек Bluetooth для Android является полностью сертифицированным стеком Bluetooth. Список сертифицированных устройств можно найти на веб-сайте Bluetooth SIG (требуется вход в систему) под QDID 169365 .
Основной стек Bluetooth находится в packages/modules/Bluetooth . Разработка ведётся в среде AOSP, и мы приветствуем любые предложения по улучшению.