藍牙低功耗

藍牙低功耗 (BLE) 可在 Android 4.3 以上版本中使用,可在裝置之間建立短暫連線,用於傳輸大量資料。未連線時,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 權限可讓應用程式掃描附近裝置,而無需要求位置資訊權限。詳情請參閱「 Android 12 的新藍牙權限」。

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

篩選掃描結果

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

OnFound/OnLost 功能會在藍牙控制器中實作,然後進行測試,確認掃描作業不會遺漏 BLE 裝置。這麼做可以節省電力,並帶來下列好處:

  • 對於 OnFound 事件,主 AP 會在偵測到特定裝置時喚醒。
  • 對於 OnLost 事件,AP 會在找不到特定裝置時喚醒。
  • 當附近裝置在有效範圍內時,架構應用程式會收到較少不必要的通知。
  • 持續掃描功能可讓架構應用程式在裝置超出範圍時收到通知。

掃描篩選器可根據裝置廣告的偵測結果 (OnFound 事件) 進行篩選。Java 層可以指定參數,例如首次發現 (或自首次發現以來的指定廣告數量)。使用 廣告封包內容篩選器 HCI 指令實作 BLE 篩選功能。