Floor detection

The automatic recognition of floor plans, locations (a.k.a. venues) and indoor-outdoor-transitions are handled in the IndoorAtlas SDK with IARegion events

/** Minimal floor detection example */
private IARegion.Listener mRegionListener = new IARegion.Listener() {
    IARegion mCurrentFloorPlan = null;

    @Override
    public void onEnterRegion(IARegion region) {
        if (region.getType() == IARegion.TYPE_FLOOR_PLAN) {
            Log.d(TAG, "Entered " + region.getName());
            Log.d(TAG, "floor plan ID: " + region.getId());
            mCurrentFloorPlan = region;
        }
    }

    @Override
    public void onExitRegion(IARegion region) {}
};

Region listeners are also registered to the IALocationManager

mIALocationManager.registerRegionListener(mRegionListener);

Disabling automatic floor detection

Even though this is not recommended, you can substitute IndoorAtlas floor detection with your own by providing an explicit floor plan (IARegion.floorPlan) with the setLocation method. This will lock the position into that floor until you provide another floor plan ID.