低功耗藍牙

Android 4.3 及更高版本中提供的低功耗藍牙 (BLE) 在設備之間創建短連接以傳輸數據突發。 BLE 在未連接時保持睡眠模式。與經典藍牙相比,這讓 BLE 提供更低的帶寬和更低的功耗。它是心率監測器或無線鍵盤等應用的理想選擇。要使用 BLE,設備需要有支持 BLE 的芯片組。

執行

所有當前的 BLE 應用配置文件都基於通用屬性配置文件(GATT)。 Android設備與BLE設備交互時,發送信息的設備為服務器端,接收信息的設備為客戶端。 Android 包括用於 BLE 的開發人員 API ,包括用於 GATT 服務器和 GATT 客戶端之間交互的 API。要充分利用 BLE API,請實施Android 藍牙 HCI 要求

設備模式

使用 BLE 時,Android 設備可以充當外圍設備、中央設備或兩者兼而有之。外圍模式允許設備發送廣告數據包。中央模式允許設備掃描廣告。作為外圍設備和中央設備的 Android 設備可以與其他 BLE 外圍設備通信,同時在外圍模式下發送廣告。支持藍牙 4.1 及更早版本的設備只能在中央模式下使用 BLE。較舊的設備芯片組可能不支持 BLE 外圍模式。

BLE掃描

使用 BLE 時,Android 設備可以更有效地定位和掃描特定的藍牙設備。 BLE API 讓應用程序開發人員可以創建過濾器,以便在主機控制器參與較少的情況下查找設備。

位置掃描

設備的定位服務可以使用藍牙來檢測藍牙信標並提供更準確的位置。這是用戶啟用該功能的方式:

  1. 轉到設置>安全和位置>位置
  2. 檢查位置/開關是否處於位置。
  3. 進入模式
  4. 選擇高精度省電模式。

在 Android 11 或更低版本中,單個應用需要位置權限才能使用 BLE 掃描,即使它們只是為了查找要連接的設備而進行掃描。如果用戶禁用位置掃描,或未授予應用位置權限,則應用將不會收到任何 BLE 掃描結果。

從 Android 12 開始, BLUETOOTH_SCANBLUETOOTH_ADVERTISEBLUETOOTH_CONNECT權限可以允許應用掃描附近的設備,而無需請求位置權限。有關更多信息,請參閱Android 12 中的新藍牙權限

用戶可以通過進入設置>安全和位置>位置>掃描並禁用藍牙掃描切換來禁用系統級藍牙後台掃描。這不會影響 BLE 掃描位置或本地設備。

過濾掃描結果

Android 6.0 及更高版本包括藍牙控制器上的 BLE 掃描和過濾器匹配。設備可以過濾掃描結果並向應用處理器 (AP) 報告與 BLE 設備相關的發現丟失事件。過濾也適用於批量掃描,這有助於節省電力,因為 BLE 掃描被卸載到固件。批量掃描減少了 AP 因 BLE 掃描設備或信標而喚醒的頻率。

OnFound / OnLost功能在藍牙控制器中實現,然後進行測試以確認 BLE 設備不會在掃描中丟失。這可以節省電力,還可以提供以下好處:

  • 對於OnFound事件,主 AP 在發現特定設備時喚醒。
  • 對於OnLost事件,AP 在找不到特定設備時喚醒。
  • 當附近的設備在範圍內時,框架應用程序會收到更少的不需要的通知。
  • 連續掃描使框架應用程序能夠在設備超出範圍時得到通知。

掃描過濾器可以基於設備廣告的發現( OnFound事件)。 Java 層可以指定參數,例如首次發現(或自首次發現以來指定的廣告數量)。使用Advertising Packet Content Filter HCI 命令實現 BLE 過濾。