1.準(zhǔn)備設(shè)備
所需硬件設(shè)備:
(1)低功率藍(lán)牙定位器若干(如:10個(gè)),網(wǎng)上有賣(mài)(單價(jià)從幾十到幾百都有)
(2)android設(shè)備一臺(tái),系統(tǒng)版本4.2以上(SDK版本大于17)
(3)iOS設(shè)備一臺(tái),支持藍(lán)牙4.0 BLE
2.設(shè)置藍(lán)牙定位器
移動(dòng)設(shè)備掃描周邊低功率藍(lán)牙設(shè)備,可以獲得藍(lán)牙設(shè)備對(duì)應(yīng)的Proximity UUID、Major、Minor等屬性信息。而剛采購(gòu)來(lái)的藍(lán)牙設(shè)備屬性可能都相同,互相區(qū)別不開(kāi),所以我們需要設(shè)置每臺(tái)設(shè)備的屬性。
設(shè)備廠商都會(huì)提供相關(guān)手機(jī)應(yīng)用,共用戶設(shè)置屬性信息。給藍(lán)牙設(shè)備裝上電池,打開(kāi)手機(jī)應(yīng)用,靠近藍(lán)牙設(shè)備就能發(fā)現(xiàn),然后就可以設(shè)置其屬性值了,其中:
UUID是一個(gè)32位的16進(jìn)制數(shù),表示設(shè)備廠商,該字段可以沿用出廠設(shè)置
Major表示不同區(qū)域(比如:某一樓層、某一地區(qū)),取值范圍0到6萬(wàn)多
Minor表示不同的設(shè)備,取值范圍0到6萬(wàn)多
樣例:UUID = e2c56db5-dffb-48d2-b060-d0f5a71096e0, Major = 1001, Minor = 10001
每臺(tái)設(shè)備設(shè)置完屬性后準(zhǔn)備一個(gè)標(biāo)簽,填上屬性信息,貼到設(shè)備上,方便以后部署。
3.部署藍(lán)牙設(shè)備
首先,準(zhǔn)備目標(biāo)場(chǎng)地地圖數(shù)據(jù),可以是基于經(jīng)緯度坐標(biāo),也可以是簡(jiǎn)單圖片坐標(biāo),看具體使用情況。
接下來(lái),將藍(lán)牙設(shè)備挨個(gè)部署到場(chǎng)地指定位置上,順便記錄每個(gè)設(shè)備地理坐標(biāo)或圖片坐標(biāo)。
最后,得到一張表格信息,記錄著每臺(tái)藍(lán)牙設(shè)備屬性和位置信息。這張表就是整個(gè)定位系統(tǒng)的指紋庫(kù),為定位算法使用。
4.客戶端App開(kāi)發(fā)
客戶端app主要功能就是掃描周?chē){(lán)牙設(shè)備,將設(shè)備列表信息上傳定位服務(wù)器,從而獲得定位效果,并展現(xiàn)給終端用戶。
4.1 Android應(yīng)用開(kāi)發(fā)
工程所需SDK版本大于17。
1. App所需權(quán)限(AndroidManifest.xml文件)
2. 創(chuàng)建beacon數(shù)據(jù)項(xiàng)類(lèi)
public class IBeaconRecord {
public String address; // 設(shè)備地址(Mac)
public String uuid; // Proximity UUID
public int major; // Major
public int minor; // Minor
public int rssi; // 場(chǎng)強(qiáng)
}
其中,address屬性可以不要,因?yàn)閕OS設(shè)備獲取不到該屬性!