[安卓] 1三、安卓藍牙定位(一)——如何週期性得到藍牙節點信號強度?

 

 

前言html

本文將用一個簡單的例子介紹如何用安卓手機的藍牙功能來週期性搜索周邊藍牙節點的信號強度,爲有意玩一下藍牙室內定位的愛好者提供一點小的思路。(若是是想用安卓手機和藍牙模塊通訊來實現遙控功能的話,能夠參考:http://www.cnblogs.com/zjutlitao/p/4231635.html;想用筆記本和藍牙模塊通訊來實現遙控功能的話能夠參考:http://www.cnblogs.com/zjutlitao/p/3886826.html;若是是想使用筆記本的藍牙來作藍牙定位的話,哈哈,建議放棄...git

效果github

按期掃描周邊藍牙設備-->根據信號強度繪製大小不一樣的圓圈(對於開發人員來講,引入如何搜索到BT信號強度LZ以爲應該很足夠啦,而後就能夠自由發揮啦)函數

簡介動畫

代碼參考:https://github.com/beautifulzzzz/Android/commit/e1d12e756d8e7c9efd9c89fb084c3f100b451427spa

成員變量】SurfaceView空間用來繪製動畫效果,BluetoothAdapter用來獲取藍牙設備,接下來依次是藍牙設備信息向量、藍牙設備信號強弱向量、畫筆向量~線程

初始化】在onCreate函數中執行初始化相關操做主要有:①畫筆初始化;②surfaceview初始化並設置回調函數(由於線程裏沒法進行界面更新,因此要把消息從線程裏發送出來在消息句柄裏進行處理,因此咱們在37~65行會看到一個消息句柄,用來接收消息並根據消息內容重繪surfaceview)設計

啓動搜索】該函數供每次觸發搜索使用,其中第一次觸發位於182行的menuOptions按鈕事件中,而後每次在繪製結束後再次調用doDiscovery進行週期性搜索。htm

搜索信息並存儲】當啓動搜索以後,若是一旦搜索到設備就會觸發BleetoothDevice.ACTION_FOUND消息,而後將藍牙設備的名字和MAC地址放進向量保存,信號強度rssi放進RSSI向量保存;當搜索結束後會觸發BluetoothAdapter.ACTION_DISCOVERY_FINISHED,在這裏代表一個搜索週期結束,經過Bundle發送msg,通知繪圖消息句柄,進行繪圖。blog

繪圖消息句柄處理bundle消息並刷新】當上面完成一個搜索週期後會發送bundle消息來觸發繪圖(以下45~48行),繪圖完畢調用doDiscovery再次搜索,如此循環往復。

後記

當你們知道了如何週期性得到周圍藍牙信號強度後,再結合市場上銷售的藍牙節點根據定位技術就能設計出特定應用場景的室內定位了~但願該文對你們有幫助!!!☆⌒(*^-゜)v

 

 

相關連接

本文連接:http://www.cnblogs.com/zjutlitao/p/4314096.html

更多精彩:http://www.cnblogs.com/zjutlitao/p/

工程代碼:http://pan.baidu.com/s/1mgzcW4o

相關文章
相關標籤/搜索