I do not want osmdroid to use the external storage location to store cache of tiles. Instead, I want it to use the app's getCacheDir() location. This is the code I have done to achieve this:
Failed to open database '/storage/emulated/0/osmdroid/tiles/cache.db'.
android.database.sqlite.SQLiteCantOpenDatabaseException: Cannot open database '/storage/emulated/0/osmdroid/tiles/cache.db' with flags 0x10000000: Directory /storage/emulated/0/osmdroid/tiles doesn't exist
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:262)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:205)
at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:512)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:210)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:202)
at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:1085)
at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:1065)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:956)
at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:973)
at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:965)
at org.osmdroid.tileprovider.modules.SqlTileWriter.getDb(SqlTileWriter.java:740)
at org.osmdroid.tileprovider.modules.SqlTileWriter.(SqlTileWriter.java:82)
at org.osmdroid.tileprovider.MapTileProviderBasic.(MapTileProviderBasic.java:89)
at org.osmdroid.tileprovider.MapTileProviderBasic.(MapTileProviderBasic.java:70)
at org.osmdroid.tileprovider.MapTileProviderBasic.(MapTileProviderBasic.java:63)
at org.osmdroid.views.MapView.(MapView.java:220)
at org.osmdroid.views.MapView.(MapView.java:193)
at org.osmdroid.views.MapView.(MapView.java:255)
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.view.LayoutInflater.createView(LayoutInflater.java:858)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1010)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:965)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1127)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1088)
at android.view.LayoutInflater.inflate(LayoutInflater.java:686)
at android.view.LayoutInflater.inflate(LayoutInflater.java:538)
at xyz.razbot.bussin.NearbyFragment.onCreateView(NearbyFragment.java:296)
at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2963)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:518)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2100)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002)
at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:524)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7959)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:942)
Caused by: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14 SQLITE_CANTOPEN): Could not open database
at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:224)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:205)
at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:512)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:210)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:202)
at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:1085)
at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:1065)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:956)
at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:973)
at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:965)
at org.osmdroid.tileprovider.modules.SqlTileWriter.getDb(SqlTileWriter.java:740)
at org.osmdroid.tileprovider.modules.SqlTileWriter.(SqlTileWriter.java:82)
at org.osmdroid.tileprovider.MapTileProviderBasic.(MapTileProviderBasic.java:89)
at org.osmdroid.tileprovider.MapTileProviderBasic.(MapTileProviderBasic.java:70)
at org.osmdroid.tileprovider.MapTileProviderBasic.(MapTileProviderBasic.java:63)
at org.osmdroid.views.MapView.(MapView.java:220)
at org.osmdroid.views.MapView.(MapView.java:193)
at org.osmdroid.views.MapView.(MapView.java:255)
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at android.view.LayoutInflater.createView(LayoutInflater.java:858)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1010)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:965)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1127)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1088)
at android.view.LayoutInflater.inflate(LayoutInflater.java:686)
at android.view.LayoutInflater.inflate(LayoutInflater.java:538)
at xyz.razbot.bussin.NearbyFragment.onCreateView(NearbyFragment.java:296)
at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2963)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:518)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2100)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002)
at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:524)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7959)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:942)
2024-03-09 16:28:48.812 12880-12880 OsmDroid xyz.razbot.bussin E Unable to start the sqlite tile writer. Check external storage availability.
full error here https://paste.witherhosting.com/verpeciffe.java, which I don't know how to fix.
Thanks in advance.
I've tried following all the guides online which state to use getCacheDir(), which I have.
I do not want osmdroid to use the external storage location to store cache of tiles. Instead, I want it to use the app's getCacheDir() location. This is the code I have done to achieve this: [code] org.osmdroid.config.IConfigurationProvider osmConf = org.osmdroid.config.Configuration.getInstance(); File basePath = new File(getContext().getCacheDir().getAbsolutePath(), "osmdroid"); osmConf.setOsmdroidBasePath(basePath); File tileCache = new File(osmConf.getOsmdroidBasePath().getAbsolutePath(), "tile"); osmConf.setOsmdroidTileCache(tileCache); osmConf.setUserAgentValue(BuildConfig.APPLICATION_ID); nearbyMap = (MapView) view.findViewById(R.id.nearby_map); nearbyMap.setTileSource(TileSourceFactory.MAPNIK); nearbyMap.setMultiTouchControls(true); [/code] However, I am still getting this error in my app [code]Failed to open database '/storage/emulated/0/osmdroid/tiles/cache.db'. android.database.sqlite.SQLiteCantOpenDatabaseException: Cannot open database '/storage/emulated/0/osmdroid/tiles/cache.db' with flags 0x10000000: Directory /storage/emulated/0/osmdroid/tiles doesn't exist at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:262) at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:205) at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:512) at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:210) at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:202) at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:1085) at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:1065) at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:956) at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:973) at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:965) at org.osmdroid.tileprovider.modules.SqlTileWriter.getDb(SqlTileWriter.java:740) at org.osmdroid.tileprovider.modules.SqlTileWriter.(SqlTileWriter.java:82) at org.osmdroid.tileprovider.MapTileProviderBasic.(MapTileProviderBasic.java:89) at org.osmdroid.tileprovider.MapTileProviderBasic.(MapTileProviderBasic.java:70) at org.osmdroid.tileprovider.MapTileProviderBasic.(MapTileProviderBasic.java:63) at org.osmdroid.views.MapView.(MapView.java:220) at org.osmdroid.views.MapView.(MapView.java:193) at org.osmdroid.views.MapView.(MapView.java:255) at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:343) at android.view.LayoutInflater.createView(LayoutInflater.java:858) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1010) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:965) at android.view.LayoutInflater.rInflate(LayoutInflater.java:1127) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1088) at android.view.LayoutInflater.inflate(LayoutInflater.java:686) at android.view.LayoutInflater.inflate(LayoutInflater.java:538) at xyz.razbot.bussin.NearbyFragment.onCreateView(NearbyFragment.java:296) at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2963) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:518) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282) at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189) at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2100) at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002) at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:524) at android.os.Handler.handleCallback(Handler.java:942) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.app.ActivityThread.main(ActivityThread.java:7959) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:942) Caused by: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14 SQLITE_CANTOPEN): Could not open database at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method) at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:224) at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:205) at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:512) at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:210) at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:202) at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:1085) at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:1065) at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:956) at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:973) at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:965) at org.osmdroid.tileprovider.modules.SqlTileWriter.getDb(SqlTileWriter.java:740) at org.osmdroid.tileprovider.modules.SqlTileWriter.(SqlTileWriter.java:82) at org.osmdroid.tileprovider.MapTileProviderBasic.(MapTileProviderBasic.java:89) at org.osmdroid.tileprovider.MapTileProviderBasic.(MapTileProviderBasic.java:70) at org.osmdroid.tileprovider.MapTileProviderBasic.(MapTileProviderBasic.java:63) at org.osmdroid.views.MapView.(MapView.java:220) at org.osmdroid.views.MapView.(MapView.java:193) at org.osmdroid.views.MapView.(MapView.java:255) at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:343) at android.view.LayoutInflater.createView(LayoutInflater.java:858) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1010) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:965) at android.view.LayoutInflater.rInflate(LayoutInflater.java:1127) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1088) at android.view.LayoutInflater.inflate(LayoutInflater.java:686) at android.view.LayoutInflater.inflate(LayoutInflater.java:538) at xyz.razbot.bussin.NearbyFragment.onCreateView(NearbyFragment.java:296) at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2963) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:518) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282) at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189) at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2100) at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002) at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:524) at android.os.Handler.handleCallback(Handler.java:942) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.app.ActivityThread.main(ActivityThread.java:7959) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:942) 2024-03-09 16:28:48.812 12880-12880 OsmDroid xyz.razbot.bussin E Unable to start the sqlite tile writer. Check external storage availability. [/code] full error here https://paste.witherhosting.com/verpeciffe.java, which I don't know how to fix. Thanks in advance. I've tried following all the guides online which state to use getCacheDir(), which I have.
I do not want osmdroid to use the external storage location to store cache of tiles. Instead, I want it to use the app's getCacheDir() location. This is the code I have done to achieve this:
org.osmdroid.config.IConfigurationProvider osmConf =...
Я использую кэш кофеина для Java Spring Boot com.github.ben-manes.caffeine:caffeine:3.1.1. Это мой класс конфигурации кэша:
import com.github.benmanes.caffeine.cache.Caffeine;
import org.springframework.cache.CacheManager;
import...
У меня есть база данных .mbtiles с плитками:
база данных
Как загрузить плитки в представление карты? Примеры из Интернета не работают. Мой код показывает серый экран по умолчанию:
public void getTilesFromArchive(Context context, MapView mMapView,...
У меня есть база данных .mbtiles с плитками:
база данных
Как загрузить плитки в представление карты? Примеры из Интернета не работают. Мой код показывает серый экран по умолчанию:
public void getTilesFromArchive(Context context, MapView mMapView,...
Я реализую приложение для нейробиологического эксперимента, в котором испытуемым приходится ориентироваться в городской среде. По умолчанию osmdroid показывает стрелку направления на месте пользователя, когда он движется. Я хочу всегда отображать...