天天看點

[安卓] 13、安卓藍牙定位(一)——如何周期性獲得藍牙節點信号強度?

前言

效果

定期掃描周邊藍牙裝置-->根據信号強度繪制大小不同的圓圈(對于開發人員來說,引入如何搜尋到BT信号強度LZ覺得應該很足夠啦,然後就可以自由發揮啦)

[安卓] 13、安卓藍牙定位(一)——如何周期性獲得藍牙節點信号強度?

簡介

【成員變量】SurfaceView空間用來繪制動畫效果,BluetoothAdapter用來擷取藍牙裝置,接下來依次是藍牙裝置資訊向量、藍牙裝置信号強弱向量、畫筆向量~

[安卓] 13、安卓藍牙定位(一)——如何周期性獲得藍牙節點信号強度?

【初始化】在onCreate函數中執行初始化相關操作主要有:①畫筆初始化;②surfaceview初始化并設定回調函數(因為線程裡無法進行界面更新,是以要把消息從線程裡發送出來在消息句柄裡進行處理,是以我們在37~65行會看到一個消息句柄,用來接收消息并根據消息内容重繪surfaceview)

[安卓] 13、安卓藍牙定位(一)——如何周期性獲得藍牙節點信号強度?

【啟動搜尋】該函數供每次觸發搜尋使用,其中第一次觸發位于182行的menuOptions按鈕事件中,然後每次在繪制結束後再次調用doDiscovery進行周期性搜尋。

[安卓] 13、安卓藍牙定位(一)——如何周期性獲得藍牙節點信号強度?

【搜尋資訊并存儲】當啟動搜尋之後,如果一旦搜尋到裝置就會觸發BleetoothDevice.ACTION_FOUND消息,然後将藍牙裝置的名字和MAC位址放進向量儲存,信号強度rssi放進RSSI向量儲存;當搜尋結束後會觸發BluetoothAdapter.ACTION_DISCOVERY_FINISHED,在這裡表明一個搜尋周期結束,通過Bundle發送msg,通知繪圖消息句柄,進行繪圖。

[安卓] 13、安卓藍牙定位(一)——如何周期性獲得藍牙節點信号強度?

【繪圖消息句柄處理bundle消息并重新整理】當上面完成一個搜尋周期後會發送bundle消息來觸發繪圖(如下45~48行),繪圖完畢調用doDiscovery再次搜尋,如此循環往複。

[安卓] 13、安卓藍牙定位(一)——如何周期性獲得藍牙節點信号強度?

後記

當大家知道了如何周期性獲得周圍藍牙信号強度後,再結合市場上銷售的藍牙節點根據定位技術就能設計出特定應用場景的室内定位了~希望該文對大家有幫助!!!⌒(*^-゜)v

相關連結

本文轉自beautifulzzzz部落格園部落格,原文連結:http://www.cnblogs.com/zjutlitao/p/4314096.html,如需轉載請自行聯系原作者

繼續閱讀