¿Cómo utilizar MOBAC creado el archivo de origen de mosaico OSMDroid SQLite sin conexión?

He estado sacándome el pelo tratando de obtener mi propio mapa sin conexión de Mobile Atlas Creator OSMDroid fuera de línea trabajando con OSMDroid 3.0.8 sin suerte. Han sido 3 largos días. Intentaré explicarlo con clips de mi aplicación. He estado extendiendo ItemizedIconOverlay y OverlayItem, así que espero que no sea demasiado confuso.

Creé mi propio archivo de mapas OSMDroid SQLite con 3 niveles de zoom diferentes para un pequeño tamaño, como 10 km cuadrados. Copié el archivo resultante "base.sqlite" en mi directorio project / res / raw /. Tenga en cuenta que los GeoPuntos en mi aplicación deben estar dentro del rango de mosaico del mapa. El archivo "base.sqlite" debe guardarse en el directorio de datos específico de la aplicación.

A continuación, coloqué el directorio / osmdroid en mi teléfono para poder eliminar los mapas previamente almacenados en caché. Pensé que tenía mis propios mapas sin conexión funcionando hasta que activé el modo Avión y noté que los mapas en caché aún estaban disponibles.

Ahora todo lo que consigo es espacios en blanco. No tengo ni idea de cómo hacer que esto funcione. He visto un par de ejemplos, pero después de un montón de experimentación no he tenido éxito en hacer que ninguno de ellos funcione.

private Hashtable<String, NodeOverlayItem> nodes = new Hashtable<String, NodeOverlayItem>();

private MapView mapView;
private Context context;

private LocationManager locManager;

private MapController mapController;
private MapTileProviderArray mapProvider;
private String mapTileArchivePath = "base.sqlite";

private ResourceProxy resourceProxy;

@Override
public void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    try {
        this.mapView = new MapView(this, 256);
        this.mapView.setBuiltInZoomControls(true);
        this.mapView.setMultiTouchControls(true);

        this.context = this.getApplicationContext();
        this.resourceProxy = new DefaultResourceProxyImpl(context);

        XYTileSource TILERENDERER = new XYTileSource("test", 
            ResourceProxy.string.offline_mode, 
            1, 20, 256, ".png", "http://127.0.0.1");
        SimpleRegisterReceiver simpleReceiver = new SimpleRegisterReceiver(this.context);

        IArchiveFile[] archives = { ArchiveFileFactory.getArchiveFile(this.getMapsFile()) };
        MapTileModuleProviderBase moduleProvider = new MapTileFileArchiveProvider(
                simpleReceiver, 
                TILERENDERER, 
                archives);
        this.mapProvider = new MapTileProviderArray(TILERENDERER, null, new MapTileModuleProviderBase[] { moduleProvider });
        this.mapProvider.setUseDataConnection(false);
        this.mapView = new MapView(this, 256, this.resourceProxy, this.mapProvider);
        this.mapView.setUseDataConnection(false);

        mapController = mapView.getController();
        mapController.setZoom(18);
        mapController.setCenter(new GeoPoint((int)(45.349622 * 1E6), (int)(-75.880700 *1E6)));

        this.setContentView(mapView);
    } catch(Exception ex) {
        Log.e("test", ex.getMessage());
    }    
}


public File getMapsFile() throws IOException {
    Log.d("test", "Trying to load map tiles to: " + this.mapTileArchivePath);
    FileOutputStream fos = this.openFileOutput(this.mapTileArchivePath, Context.MODE_PRIVATE);

    InputStream in = getResources().openRawResource(R.raw.osmdroid);
    byte[] buff = new byte[1024];
    int read = 0;
    try {
    while ((read = in.read(buff)) > 0) {
      fos.write(buff, 0, read);
    }
    } finally {
      in.close();
      fos.close();
    }
    return new File(this.getFilesDir(), this.mapTileArchivePath);
    }