Bluetooth Low Energy (BLE), доступный в Android 4.3 и более поздних версиях, создает короткие соединения между устройствами для передачи пакетов данных. BLE остается в спящем режиме, когда не подключен. Это позволяет BLE обеспечить меньшую пропускную способность и снизить энергопотребление по сравнению с классическим Bluetooth. Он идеально подходит для таких приложений, как пульсометр или беспроводная клавиатура. Чтобы использовать BLE, устройства должны иметь набор микросхем, поддерживающий BLE.
Выполнение
Все текущие профили приложений BLE основаны на общем профиле атрибутов (GATT). Когда устройство Android взаимодействует с устройством BLE, устройство, отправляющее информацию, является сервером, а устройство, получающее информацию, — клиентом. Android включает API-интерфейсы разработчика для BLE , включая API для взаимодействия между серверами GATT и клиентами GATT. Чтобы в полной мере использовать API BLE, реализуйте требования Android Bluetooth HCI .
Режимы устройства
При использовании BLE устройство Android может выступать в качестве периферийного устройства, центрального устройства или того и другого. Периферийный режим позволяет устройствам отправлять рекламные пакеты. Центральный режим позволяет устройствам сканировать рекламу. Устройство Android, выступающее как периферийное, так и центральное устройство, может взаимодействовать с другими периферийными устройствами BLE, отправляя рекламные объявления в периферийном режиме. Устройства, поддерживающие Bluetooth 4.1 и более ранние версии, могут использовать BLE только в центральном режиме. Чипсеты старых устройств могут не поддерживать режим периферийных устройств BLE.
BLE-сканирование
Устройство Android может более эффективно нацеливать и сканировать определенные устройства Bluetooth при использовании BLE. API BLE позволяют разработчикам приложений создавать фильтры для поиска устройств с меньшим участием хост-контроллера.
Сканирование местоположения
Службы определения местоположения устройства могут использовать Bluetooth для обнаружения маяков Bluetooth и определения более точного местоположения. Вот как пользователи включают эту функцию:
- Откройте «Настройки» > «Безопасность и местоположение» > «Местоположение» .
- Убедитесь, что переключатель « Вкл. / Выкл. местоположения» находится в положении «Вкл. ».
- Перейдите в режим .
- Выберите режим «Высокая точность» или «Режим экономии заряда батареи» .
В Android 11 или более ранней версии отдельным приложениям требуются разрешения на определение местоположения, чтобы использовать сканирование BLE, даже если они сканируют только для поиска устройств для подключения. Если пользователь отключает сканирование местоположения или не предоставляет приложению разрешения на определение местоположения, приложение не получит никаких результатов сканирования BLE.
Начиная с Android 12, разрешения BLUETOOTH_SCAN
, BLUETOOTH_ADVERTISE
и BLUETOOTH_CONNECT
позволяют приложениям сканировать близлежащие устройства без необходимости запрашивать разрешение на определение местоположения. Дополнительную информацию см. в разделе Новые разрешения Bluetooth в Android 12 .
Пользователи могут отключить фоновое сканирование Bluetooth на системном уровне, выбрав «Настройки» > «Безопасность и местоположение» > «Местоположение» > «Сканирование» и отключив переключатель сканирования Bluetooth . Это не влияет на сканирование BLE на предмет местоположения или локальных устройств.
Фильтрация результатов сканирования
Android 6.0 и более поздние версии включают сканирование BLE и сопоставление фильтров на контроллере Bluetooth. Устройство может фильтровать результаты сканирования и сообщать об обнаруженных и потерянных событиях, связанных с устройствами BLE, процессору приложений (AP). Фильтрация также работает для пакетного сканирования, что помогает экономить электроэнергию, поскольку сканирование BLE переносится на прошивку. Пакетное сканирование уменьшает частоту пробуждения точки доступа из-за сканирования BLE устройств или маяков.
Функция OnFound
/ OnLost
реализована в контроллере Bluetooth, а затем протестирована, чтобы подтвердить, что устройства BLE не пропускаются при сканировании. Это обеспечивает экономию электроэнергии, а также может дать следующие преимущества:
- В случае события
OnFound
основная точка доступа просыпается при обнаружении определенного устройства. - В случае события
OnLost
точка доступа просыпается, когда определенное устройство не может быть найдено. - Приложения Framework получают меньше нежелательных уведомлений, когда ближайшее устройство находится в зоне действия.
- Непрерывное сканирование позволяет приложениям платформы получать уведомления, когда устройство находится вне зоны действия.
Фильтр сканирования может быть основан на обнаружении рекламы устройства (событие OnFound
). Уровень Java может указывать такие параметры, как первое обнаружение (или заданное количество рекламных объявлений с момента первого обнаружения). Реализуйте фильтрацию BLE с помощью команды Advertising Packet Content Filter HCI .