藍牙低功耗

藍牙低功耗 (BLE) 技術適用於 Android 4.3 以上版本,可在裝置間建立短暫連線,傳輸大量資料。BLE 未連線時會維持睡眠模式。相較於傳統藍牙,BLE 的頻寬較低,耗電量也較少。BLE 非常適合心率監測器或無線鍵盤等應用程式。如要使用 BLE,裝置必須配備支援 BLE 的晶片組。

實作

目前所有 BLE 應用程式設定檔都是以通用屬性 (GATT) 設定檔為基礎。Android 裝置與 BLE 裝置互動時,傳送資訊的裝置是伺服器,接收資訊的裝置則是用戶端。Android 包含 BLE 的開發人員 API,包括 GATT 伺服器和 GATT 用戶端之間的互動 API。如要充分運用 BLE API,請實作 Android Bluetooth 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_SCAN BLUETOOTH_ADVERTISE BLUETOOTH_CONNECT 權限掃描附近的裝置,不必要求位置資訊權限。詳情請參閱「 藍牙權限」。

使用者可以依序前往「設定」>「安全性與位置資訊」>「位置資訊」>「掃描」,然後點選「藍牙掃描」切換鈕,將其設為關閉,即可停用系統層級的藍牙背景掃描功能。這不會影響位置資訊或本機裝置的 BLE 掃描。

篩選掃描結果

Android 6.0 以上版本會在藍牙控制器上進行 BLE 掃描和篩選器比對。裝置可以篩選掃描結果,並向應用程式處理器 (AP) 回報與 BLE 裝置相關的「找到」和「遺失」事件。篩選功能也適用於批次掃描,有助於節省電力,因為裝置會將 BLE 掃描作業卸載至韌體。批次掃描可減少 AP 因 BLE 掃描裝置或信標而喚醒的頻率。

OnFound/OnLost 功能是在藍牙控制器中實作,然後經過測試,確認掃描時不會遺漏 BLE 裝置。這項功能可節省電力,還能帶來下列好處:

  • 如果是 OnFound 事件,主要 AP 會在發現特定裝置時喚醒。
  • 如果是 OnLost 事件,當系統找不到特定裝置時,存取點就會喚醒。
  • 附近裝置在範圍內時,架構應用程式會減少收到不必要的通知。
  • 持續掃描功能可讓架構應用程式在裝置超出範圍時收到通知。

掃描篩選器可以根據裝置的廣告探索 (OnFound 事件) 建立。Java 層可以指定參數,例如首次探索 (或自首次探索起指定數量的廣告)。使用 Advertising Packet Content Filter HCI 指令實作 BLE 篩選功能。