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

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

    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;

    public void onExitRegion(IARegion region) {}

Region listeners are also registered to the IALocationManager


Note that there are several complete examples in the IndoorAtlas Android Examples

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.