Bluetooth

Значок Android Bluetooth HAL

В Android по умолчанию используется стек Bluetooth, поддерживающий как классический Bluetooth, так и Bluetooth с низким энергопотреблением (BLE). Устройства Android могут создавать персональные сети с помощью Bluetooth, чтобы отправлять и получать данные с ближайших устройств Bluetooth.

В Android 4.3 и более поздних версий стек Bluetooth Android позволяет реализовать BLE. Чтобы использовать BLE API в полной мере, следуйте требованиям к интерфейсу "человек-компьютер" Bluetooth в Android. Устройства 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 по умолчанию предоставляется в AOSP и находится в каталоге packages/modules/Bluetooth/system. Стек реализует общий HAL Bluetooth и настраивает его с помощью расширений и изменений конфигурации.
реализация поставщика
Устройства поставщиков взаимодействуют со стеком Bluetooth с помощью языка описания интерфейса HAL (HIDL).

HIDL

HIDL определяет интерфейс между стеком Bluetooth и реализацией поставщика. Чтобы создать файлы HIDL для Bluetooth, передайте файлы интерфейса Bluetooth в инструмент генерации HIDL. Файлы интерфейса находятся в каталоге hardware/interfaces/bluetooth.

Разработка стека Bluetooth

Стек Bluetooth в Android полностью соответствует требованиям. Список квалификаций можно найти на сайте Bluetooth SIG (требуется вход) по идентификатору QDID 169365.

Основной стек Bluetooth находится в packages/modules/Bluetooth. Разработка ведется в AOSP, и мы приветствуем участие в ней.