Bluetooth с низким энергопотреблением

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 и определения более точного местоположения. Вот как пользователи включают эту функцию:

  1. Выберите « Настройки » > « Безопасность и местоположение » > « Местоположение ».
  2. Убедитесь, что переключатель Location On / Off находится в положении On .
  3. Перейти в режим .
  4. Выберите либо режим высокой точности, либо режим экономии заряда батареи .

В 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 с помощью команды HCI Advertising Packet Content Filter .