Thiago Siqueira
Thiago Siqueira

Reputation: 45

How to change the osmdroid default path to extSdCard?

I would like to know, how to change the osmdroid default path to an extSdCard path?
according to the documentation, it is possible using:

Configuration.getInstance().SetOsmdroidBasePath();

I believe when running my project it automatically starts on the way: StorageUtils.getStorage().GetAbsolutePath() , "osmdroid"

I tried to use the command below, but my map does not display the tiles

Configuration.getInstance().setOsmdroidBasePath(new File("/mnt/extSdCard/osmdroid"));

And when I debug my code using this: Configuration.getInstance().GetOsmdroidBasePath().GetPath()

It presents the correct path.

It is necessary to perform some reload of my map?

Upvotes: 0

Views: 470

Answers (2)

Miguel Tomás
Miguel Tomás

Reputation: 1911

For OSM version 6.x you can use the following code

@Override
    public void onCreate() {
    ...
    org.osmdroid.config.IConfigurationProvider osmConf = org.osmdroid.config.Configuration.getInstance();
    File basePath = new File(getCacheDir().getAbsolutePath(), "osmdroid");
    osmConf.setOsmdroidBasePath(basePath);
    File tileCache = new File(osmConf.getOsmdroidBasePath().getAbsolutePath(), "tile");
    osmConf.setOsmdroidTileCache(tileCache);
    ...
}

Upvotes: 0

spy
spy

Reputation: 3258

If the user has granted runtime permissions for storage before the map view is created, then it should work just fine. You may want to check to make sure you can write to that path. Android is strange and often times just because a path is available does not mean you can write to it. The StorageUtils class can help you find the available paths and it should be able to determine which path is writable. It is, however, imperfect. Paths can vary from device to device and results can be unpredictable.looking at this link might help you.

Upvotes: 1

Related Questions