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. В зависимости от типа данных, которые они передают, один или другой может выступать в роли сервера. Например, если трекер активности хочет передавать данные датчиков на телефон, возможно, имеет смысл выступить в роли сервера. Если трекер активности хочет получать обновления с телефона, возможно, имеет смысл использовать телефон в качестве сервера.
В примере, использованном в этом разделе, приложение (работающее на устройстве Android) является клиентом GATT. Приложение получает данные с сервера GATT, который представляет собой монитор сердечного ритма BLE, поддерживающий профиль сердечного ритма . В качестве альтернативы вы можете разработать свое приложение так, чтобы оно выполняло роль сервера GATT. См. BluetoothGattServer
для получения дополнительной информации.