啟動SAILS引擎

宣告SAILS與 SAILSMapView物件


在onCreate或是onCreateView中建立一個SAILS物件與一個SAILSMapView物件:

mSails = new SAILS(activity);
mSailsMapView = new SAILSMapView(activity);

SAILS類別整合了定位引擎與路徑規劃引擎,SAILSMapView類別則為向量地圖顯示引擎。 透過以下設定,SAILSMapView可以自動與SAILS相互溝通:

mSailsMapView.setSAILSEngine(mSails);

WiFi / BLE 定位模式選擇


僅有SAILS Android SDK可進行WiFi/BLE定位的選擇,iOS由於不開放WiFi Scan函式庫,故無法使用WiFi定位。

//BLE Positioning
mSails.setMode(SAILS.BLE_GFP_IMU);
//WiFi Positioning
mSails.setMode(SAILS.WIFI_GFP_IMU);

從SAILS Cloud 載入室內定位專案


當您在SAILS Cloud建立專案並完成了地圖繪製與定位佈建,即可於SDK中透過loadCloudBuilding函式將該專案載入,token與building ID獲取方式請參考第一章簡介。

mSails.loadCloudBuilding(token, buildingId, new SAILS.OnFinishCallback() {
    @Override
    public void onSuccess(String response) {
        if (getActivity() == null)
            return;
        new Thread(new Runnable() {
            @Override
            public void run() {
                // do something if load building successfully 
                if (getActivity() == null)
                    return;
                startLocatingEngine(); 
                getActivity().runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                    // do UI things in UI Thread 
                        mapViewInitial();
                        progressdg.dismiss();
                    }
                });
            }
        }).start();
    }
    @Override
    public void onFailed(String response) {
        progressdg.dismiss();
        // show error dialog
    }
});

在呼叫loadCloudBuilding時會連接網路至SAILS Cloud下載您最新的室內定位專案檔案,若此時用戶無網路,則會載入上次已載入的版本。因此,用戶第一次打開APP仍需要連網才可以下載使用。只要下載完成後,接下來使用SAILS SDK提供的服務(地圖顯示、定位、路徑規劃)都不再需要連網。

請注意,若在onSuccess()與onFail()中有更動UI,請另建UI Thread。例如向量地圖顯示引擎即為UI相關元件,須在UI Thread中呼叫。

啟動引擎


成功載入定位專案後,即可打開定位引擎與向量地圖顯示引擎。

定位引擎:

mSails.startLocatingEngine();

向量地圖的部分可以先確認SAILS物件中有樓層物件,然後讓mSailsMapView載入第一個樓層物件,如下:

if (!mSails.getFloorNameList().isEmpty()) {
  mSailsMapView.loadFloorMap(mSails.getFloorNameList().get(0));
}

取得用戶所在位置


SAILS SDK並不提供座標,有關定位點在地圖的顯示都包含在SDK裡,開發者並不需要特別設定。 若需要取得用戶目前所在區域,可透過

List<LocationRegions> list = mSails.getCurrentInRegions();

來取得,這裡留意會用list方式表示的原因為用戶所在的區域可能被數個LocationRegion涵蓋。

APP離開或進入時定位引擎的設定


目前SAILS定位引擎僅支援前景定位,故在Activity中的onPuase()與onResume()需加入讓定位引擎暫停與繼續的指令。

onPause()

if (mSails != null) {
    if (mSails.isLocationEngineStarted()) {
        locationStart = true;
    } else {
        locationStart = false;
    }
    mSails.stopLocatingEngine();
}

locationStart將引擎是否啟動的狀態記錄下來,以便onResume()時判斷是否打開定位引擎。

onResume()

if (mSails != null && locationStart) {
      mSails.startLocatingEngine();
}

results matching ""

    No results matching ""