Android обеспечивает центральную встроенную поддержку платформы Bluetooth Low Energy (BLE) и предоставляет API-интерфейсы, которые приложения могут использовать для обнаружения устройств, запроса услуг и передачи информации.
Общие случаи использования включают следующее:
- Передача небольших объемов данных между соседними устройствами.
- Взаимодействие с датчиками приближения, чтобы предоставить пользователям индивидуальный подход в зависимости от их текущего местоположения.
В отличие от классического Bluetooth , BLE рассчитан на значительно более низкое энергопотребление. Это позволяет приложениям взаимодействовать с устройствами BLE, которые имеют более строгие требования к питанию, такими как датчики приближения, мониторы сердечного ритма и фитнес-устройства.
Внимание: когда пользователь соединяет свое устройство с другим устройством с помощью BLE, данные, передаваемые между двумя устройствами, доступны всем приложениям на устройстве пользователя.
По этой причине, если ваше приложение собирает конфиденциальные данные, вам следует реализовать безопасность на уровне приложения, чтобы защитить конфиденциальность этих данных.
Основы
Чтобы устройства с поддержкой BLE могли передавать данные между собой, они должны сначала сформировать канал связи. Для использования API-интерфейсов Bluetooth LE необходимо объявить несколько разрешений в файле манифеста. Как только ваше приложение получит разрешение на использование Bluetooth, вашему приложению потребуется доступ к BluetoothAdapter
и определить, доступен ли Bluetooth на устройстве. Если Bluetooth доступен, устройство выполнит поиск ближайших устройств BLE . Как только устройство найдено, возможности устройства BLE обнаруживаются путем подключения к серверу GATT на устройстве BLE . После установления соединения данные могут передаваться с помощью подключенного устройства в зависимости от доступных услуг и характеристик.
Ключевые термины и понятия
Ниже приводится краткое изложение ключевых терминов и понятий BLE:
- Общий профиль атрибутов (GATT)
- Профиль GATT — это общая спецификация для отправки и получения коротких фрагментов данных, известных как «атрибуты», по ссылке BLE. Все текущие профили приложений BLE основаны на GATT. Чтобы узнать больше, просмотрите образец Android BluetoothLeGatt на GitHub.
- Профили
- Bluetooth SIG определяет множество профилей для устройств BLE. Профиль — это спецификация того, как устройство работает в конкретном приложении. Обратите внимание, что устройство может реализовать более одного профиля. Например, устройство может содержать монитор сердечного ритма и детектор уровня заряда батареи.
- Протокол атрибутов (ATT)
- ГАТТ построен на основе протокола атрибутов (АТТ). Это также называется ГАТТ/АТТ. ATT оптимизирован для работы на устройствах BLE. С этой целью он использует как можно меньше байтов. Каждый атрибут уникально идентифицируется универсальным уникальным идентификатором (UUID), который представляет собой стандартизированный 128-битный формат строкового идентификатора, используемый для уникальной идентификации информации. Атрибуты, передаваемые ATT, форматируются как характеристики и услуги .
- Характеристика
- Характеристика содержит одно значение и 0-n дескрипторов, описывающих значение характеристики. Характеристику можно рассматривать как тип, аналогичный классу.
- Дескриптор
- Дескрипторы — это определенные атрибуты, описывающие значение характеристики. Например, дескриптор может указывать удобочитаемое описание, приемлемый диапазон значения характеристики или единицу измерения, специфичную для значения характеристики.
- Услуга
- Услуга представляет собой совокупность характеристик. Например, у вас может быть служба под названием «Монитор сердечного ритма», которая включает в себя такие функции, как «измерение сердечного ритма». Список существующих профилей и услуг на основе GATT можно найти на сайте bluetooth.org .
Роли и обязанности
Когда устройство взаимодействует с устройством BLE, роли и обязанности делятся двумя разными способами:
Центральное и периферическое. Это относится к самому соединению BLE — устройство в центральной роли сканирует в поисках рекламы, а устройство в периферийной роли размещает рекламу. Два устройства, поддерживающие только периферийную роль, не могут взаимодействовать друг с другом, как и два устройства, поддерживающие только центральную роль.
Сервер GATT и клиент GATT. Это определяет, как два устройства общаются друг с другом после установления соединения. Устройство в роли клиента отправляет запросы на данные, а устройство в роли сервера их выполняет.
Чтобы понять разницу между разделением ролей центрально-периферийное устройство и сервер-клиент, рассмотрим пример, где у вас есть телефон Android и трекер активности с поддержкой BLE, который передает данные датчиков обратно на телефон.
Телефон — центральное устройство — активно сканирует устройства BLE. Трекер активности — периферийное устройство — объявляет о себе и ожидает получения запроса на соединение.
После того как телефон и трекер активности установили соединение, они начинают передавать друг другу метаданные GATT. В этом случае приложение, работающее на телефоне, отправляет запросы на данные, поэтому оно действует как клиент GATT . Трекер активности выполняет эти запросы, поэтому он действует как сервер GATT .
Альтернативный дизайн приложения может включать в себя телефон, выполняющий роль сервера GATT. См. BluetoothGattServer
для получения дополнительной информации.