Bluetooth

значок Android Bluetooth HAL

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:

Диаграмма, показывающая уровни стека Bluetooth в Android.

Рисунок 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, и мы приветствуем любые предложения по улучшению.