天天看點

BLE掃描安卓實作

BLE掃描安卓實作

BLE掃描安卓實作

低功耗藍牙在市面上越發常見,使用的場景也不斷地增加,接着《低功耗藍牙BLE掃描》繼續分享其在安卓系統是如何實作的。

一切的技術或服務都是為應用而存在的,BLE也不例外,BLE發揮其強大功能的起點必是那些BLE相關的應用,第一步就是掃描周圍環境中的低功耗藍牙裝置了。

本期安卓代碼使用的版本:Android – 9

BLE應用開啟掃描的接口如下兩種方案:

  1. BluetoothLeScanner. startScan(),提供了多種接口,最簡單的就是傳入回調函數友善後續接收掃描到的結果
  2. BluetoothAdapter. startLeScan(),過時接口,内部實作方案同方案一,不建議使用

顯而易見方案一是目前安卓系統開啟BLE掃描的主流接口,我們就跟随 BluetoothLeScanner. startScan() 開啟本篇的分享吧。

應用層可以通過接口設定BLE掃描的參數和過濾條件,進而隻關心自己應用感興趣的藍牙裝置,減少了不必要的操作。為了廣泛性,接下來都是采用預設參數開啟的掃描。

BLE掃描還有個特殊性就是一對一,就是一個應用對應一個掃描ID,應用設定的參數或過濾條件等都是和這個掃描ID綁定的,進而實作隻上報應用感興趣的BLE裝置的目标。是以BLE掃描流程分為如下兩步:

  1. 掃描apk注冊
  2. 開始掃描

步驟一:掃描apk注冊

通過該流程擷取到對應于目前應用的掃描ID,注冊成為一個合法的掃描者,簡單時序圖如下

BLE掃描安卓實作

步驟二:開始掃描

通過第一步注冊成功擷取到的掃描ID将應用設定的掃描參數和過濾條件下發到藍牙晶片,并最後使能掃描。

BLE掃描安卓實作

上面時序圖中開啟BLE掃描簡單總結就是完成了三個動作:設定過濾條件(scan filter)、設定掃描參數、使能BLE掃描,藍牙晶片依次接收到上面三條指令後就執行BLE掃描,并将掃描到的BLE裝置依次上報,最終資料上報到各應用中,應用根據自己的需要擷取相關資料進行展示。

下面截取了一段 BLE調試助手 apk掃描BLE裝置的視訊,大體流程同上所述:

BLE scan

由于安卓系統在使能BLE掃描時,預設不會設定逾時時間的,是以需要上層應用主動決定何時停止掃描。

本期分享就先到這兒,感興趣的小夥伴歡迎私信留言一起讨論,共同學習,一起進步!更多互聯互通技術,歡迎關注微信公衆号:Connectivity

BLE掃描安卓實作

繼續閱讀