Bluetooth с низким энергопотреблением (BLE), доступный в Android 4.3 и более поздних версиях, создает короткие соединения между устройствами для передачи пакетов данных. BLE находится в спящем режиме при отсутствии подключения. Это позволяет BLE обеспечивать меньшую пропускную способность и меньшее энергопотребление по сравнению с классическим Bluetooth. BLE идеально подходит для таких приложений, как пульсометр или беспроводная клавиатура. Для использования BLE устройства должны иметь чипсет с поддержкой BLE.
Выполнение
Все текущие профили приложений BLE основаны на профиле Generic Attribute (GATT) . При взаимодействии устройства Android с устройством BLE устройство, отправляющее информацию, выступает в роли сервера, а устройство, получающее информацию, — клиента. Android включает API для разработчиков для BLE , включая API для взаимодействия между серверами и клиентами 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 .
Пользователи могут отключить фоновое сканирование Bluetooth на системном уровне, перейдя в раздел «Настройки» > «Безопасность и местоположение» > «Местоположение» > «Сканирование» и установив переключатель сканирования Bluetooth в положение «Выкл». Это не повлияет на сканирование Bluetooth для определения местоположения или локальных устройств.
Фильтрация результатов сканирования
В Android 6.0 и более поздних версиях реализовано сканирование BLE и сопоставление фильтров на контроллере Bluetooth. Устройство может фильтровать результаты сканирования и сообщать процессору приложений (AP) о найденных и потерянных событиях, связанных с устройствами BLE. Фильтрация также работает при пакетном сканировании, что способствует экономии энергии, поскольку устройство переносит сканирование BLE на встроенное ПО. Пакетное сканирование снижает частоту пробуждения точки доступа (AP) в результате сканирования устройств BLE или маяков.
Функция OnFound
/ OnLost
реализована в контроллере Bluetooth и затем протестирована, чтобы убедиться, что устройства BLE не пропускаются при сканировании. Это обеспечивает экономию энергии, а также может дать следующие преимущества:
- При возникновении события
OnFound
основная точка доступа активируется при обнаружении определенного устройства. - При возникновении события
OnLost
точка доступа активируется, когда определенное устройство не может быть найдено. - Приложения Framework получают меньше нежелательных уведомлений, если в зоне действия находится соседнее устройство.
- Непрерывное сканирование позволяет приложениям фреймворка получать уведомления о том, что устройство находится вне зоны действия сети.
Фильтр сканирования может быть основан на обнаружении рекламных объявлений устройства (событие OnFound
). Уровень Java может задавать такие параметры, как время первого обнаружения (или количество рекламных объявлений с момента первого обнаружения). Реализуйте фильтрацию BLE с помощью команды HCI Advertising Packet Content Filter .