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 允許應用程式開發人員建立過濾器來尋找設備,而主機控制器的參與度較少。
位置掃描
裝置的定位服務可以使用藍牙來偵測藍牙信標並提供更準確的位置。用戶啟用該功能的方式如下:
- 前往「設定」 > “安全性和位置” > “位置” 。
- 檢查位置開/關開關是否處於開啟位置。
- 轉到模式。
- 選擇高精度或省電模式。
在 Android 11 或更低版本中,個別應用程式需要位置權限才能使用 BLE 掃描,即使它們只是進行掃描以查找要連接的裝置。如果使用者停用位置掃描,或未授予應用程式位置權限,則該應用程式將不會收到任何 BLE 掃描結果。
從 Android 12 開始, BLUETOOTH_SCAN
、 BLUETOOTH_ADVERTISE
和BLUETOOTH_CONNECT
權限可以允許應用程式掃描附近的設備,而無需請求位置權限。有關更多信息,請參閱Android 12 中的新藍牙權限。
使用者可以透過前往「設定」 > “安全性和位置” > “位置” > “掃描”並停用藍牙掃描開關來停用系統級藍牙後台掃描。這不會影響 BLE 掃描位置或本機裝置。
過濾掃描結果
Android 6.0 及更高版本在藍牙控制器上包含 BLE 掃描和濾鏡匹配。設備可以過濾掃描結果並向應用程式處理器 (AP) 報告與 BLE 設備相關的發現和遺失事件。過濾也適用於大量掃描,這有助於節省電量,因為 BLE 掃描已卸載到韌體。批量掃描可減少因 BLE 掃描設備或信標而喚醒 AP 的頻率。
OnFound
/ OnLost
功能在藍牙控制器中實現,然後進行測試以確認掃描中不會遺漏 BLE 裝置。這不僅可以節省電能,還可以帶來以下好處:
- 對於
OnFound
事件,主 AP 在發現特定裝置時喚醒。 - 對於
OnLost
事件,當找不到特定裝置時 AP 會被喚醒。 - 當附近的設備在範圍內時,框架應用程式收到的不需要的通知會更少。
- 連續掃描使框架應用程式能夠在設備超出範圍時收到通知。
掃描過濾器可以基於裝置廣告的發現( OnFound
事件)。 Java層可指定諸如首次發現(或自首次發現以來指定的廣告數量)等參數。使用Advertising Packet Content Filter HCI 指令實作 BLE 過濾。