2016-10-18 5 views
1

У меня есть Alcatel One Touch 7040, когда я тестирую свой образец osmdroid на нем, карты не отображаются. Я тестировал на других устройствах, карты в них отображаются правильно, только на этом устройстве они не являются. Я думал, что память моего устройства невелика, поэтому я удалил некоторые приложения с моего устройства, но ничего не улучшилось, может кто-нибудь, пожалуйста, скажите мне, что может быть причиной?Карты Osmdroid не загружаются на моем устройстве

Ниже мой LogCat (некоторые его части были удалены, так как максимальное количество слов превышено):

10-17 23:03:27.688 26424-26424/marine.com.osmsample I/OsmDroid: Using tile source: Mapnik 
10-17 23:03:27.702 26424-26424/marine.com.osmsample E/OsmDroid: unable to create a nomedia file. downloaded tiles may be visible to the gallery. open failed: ENOENT (No such file or directory) 
10-17 23:03:27.715 26424-26424/marine.com.osmsample E/SQLiteLog: (14) cannot open file at line 30202 of [00bb9c9ce4] 
10-17 23:03:27.715 26424-26424/marine.com.osmsample E/SQLiteLog: (14) os_unix.c:30202: (2) open(/storage/sdcard0/osmdroid/tiles/cache.db) - 
10-17 23:03:27.729 26424-26424/marine.com.osmsample E/SQLiteDatabase: Failed to open database '/storage/sdcard0/osmdroid/tiles/cache.db'. 
                     android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database 
                      at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method) 
                      at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209) 
                      at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193) 
                      at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463) 
                      at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185) 
                      at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177) 
                      at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804) 
                      at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789) 
                      at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694) 
                      at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:709) 
                      at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:702) 
                      at org.osmdroid.tileprovider.modules.SqlTileWriter.<init>(SqlTileWriter.java:44) 
                      at org.osmdroid.tileprovider.MapTileProviderBasic.<init>(MapTileProviderBasic.java:76) 
                      at org.osmdroid.tileprovider.MapTileProviderBasic.<init>(MapTileProviderBasic.java:50) 
                      at org.osmdroid.views.MapView.<init>(MapView.java:170) 
                      at org.osmdroid.views.MapView.<init>(MapView.java:200) 
                      at java.lang.reflect.Constructor.constructNative(Native Method) 
                      at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 
                      at android.view.LayoutInflater.createView(LayoutInflater.java:587) 
                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687) 
                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
                      at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:285) 
                      at android.app.Activity.setContentView(Activity.java:1882) 
                      at marine.com.osmsample.MainActivity.onCreate(MainActivity.java:55) 
                      at android.app.Activity.performCreate(Activity.java:5121) 
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1146) 
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2358) 
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2446) 
                      at android.app.ActivityThread.access$600(ActivityThread.java:165) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373) 
                      at android.os.Handler.dispatchMessage(Handler.java:107) 
                      at android.os.Looper.loop(Looper.java:194) 
                      at android.app.ActivityThread.main(ActivityThread.java:5434) 
                      at java.lang.reflect.Method.invokeNative(Native Method) 
                      at java.lang.reflect.Method.invoke(Method.java:525) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:834) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
                      at dalvik.system.NativeStart.main(Native Method) 
10-17 23:03:27.731 26424-26424/marine.com.osmsample E/OsmDroid: Unable to start the sqlite tile writer. Check external storage availability. 
                   android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database 
                    at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method) 
                    at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209) 
                    at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193) 
                    at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463) 
                    at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185) 
                    at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177) 
                    at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804) 
                    at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789) 
                    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694) 
                    at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:709) 
                    at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:702) 
                    at org.osmdroid.tileprovider.modules.SqlTileWriter.<init>(SqlTileWriter.java:44) 
                    at org.osmdroid.tileprovider.MapTileProviderBasic.<init>(MapTileProviderBasic.java:76) 
                    at org.osmdroid.tileprovider.MapTileProviderBasic.<init>(MapTileProviderBasic.java:50) 
                    at org.osmdroid.views.MapView.<init>(MapView.java:170) 
                    at org.osmdroid.views.MapView.<init>(MapView.java:200) 
                    at java.lang.reflect.Constructor.constructNative(Native Method) 
                    at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 
                    at android.view.LayoutInflater.createView(LayoutInflater.java:587) 
                    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687) 
                    at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
                    at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
                    at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
                    at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
                    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:285) 
                    at android.app.Activity.setContentView(Activity.java:1882) 
                    at marine.com.osmsample.MainActivity.onCreate(MainActivity.java:55) 
                    at android.app.Activity.performCreate(Activity.java:5121) 
                    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1146) 
                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2358) 
                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2446) 
                    at android.app.ActivityThread.access$600(ActivityThread.java:165) 
                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373) 
                    at android.os.Handler.dispatchMessage(Handler.java:107) 
                    at android.os.Looper.loop(Looper.java:194) 
                    at android.app.ActivityThread.main(ActivityThread.java:5434) 
                    at java.lang.reflect.Method.invokeNative(Native Method) 
                    at java.lang.reflect.Method.invoke(Method.java:525) 
                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:834) 
                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
                    at dalvik.system.NativeStart.main(Native Method) 
10-17 23:03:27.732 26424-26424/marine.com.osmsample D/dalvikvm: create interp thread : stack size=128KB 
10-17 23:03:27.732 26424-26424/marine.com.osmsample D/dalvikvm: create new thread 
10-17 23:03:27.732 26424-26424/marine.com.osmsample D/dalvikvm: new thread created 
10-17 23:03:27.732 26424-26424/marine.com.osmsample D/dalvikvm: update thread list 
10-17 23:03:27.732 26424-26944/marine.com.osmsample D/dalvikvm: threadid=17: interp stack at 0x5f42b000 
10-17 23:03:27.732 26424-26944/marine.com.osmsample D/dalvikvm: threadid=17: created from interp 
10-17 23:03:27.732 26424-26424/marine.com.osmsample D/dalvikvm: start new thread 
10-17 23:03:27.733 26424-26944/marine.com.osmsample D/dalvikvm: threadid=17: notify debugger 
10-17 23:03:27.733 26424-26944/marine.com.osmsample D/dalvikvm: threadid=17 (Thread-2646): calling run() 
10-17 23:03:27.733 26424-26944/marine.com.osmsample D/dalvikvm: threadid=17: exiting 
10-17 23:03:27.733 26424-26944/marine.com.osmsample D/dalvikvm: threadid=17: bye! 
10-17 23:03:27.739 26424-26424/marine.com.osmsample I/OsmDroid: sdcard state: mounted 
10-17 23:03:27.745 26424-26424/marine.com.osmsample I/OsmDroid: sdcard state: mounted 
10-17 23:03:27.746 26424-26424/marine.com.osmsample E/SQLiteLog: (14) cannot open file at line 30202 of [00bb9c9ce4] 
10-17 23:03:27.746 26424-26424/marine.com.osmsample E/SQLiteLog: (14) os_unix.c:30202: (2) open(/storage/sdcard0/osmdroid/tiles/cache.db) - 
10-17 23:03:27.749 26424-26424/marine.com.osmsample E/SQLiteDatabase: Failed to open database '/storage/sdcard0/osmdroid/tiles/cache.db'. 
                     android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database 
                      at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method) 
                      at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209) 
                      at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193) 
                      at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463) 
                      at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185) 
                      at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177) 
                      at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804) 
                      at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789) 
                      at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694) 
                      at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:709) 
                      at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:702) 
                      at org.osmdroid.tileprovider.modules.SqlTileWriter.<init>(SqlTileWriter.java:44) 
                      at org.osmdroid.tileprovider.modules.MapTileSqlCacheProvider.<init>(MapTileSqlCacheProvider.java:57) 
                      at org.osmdroid.tileprovider.modules.MapTileSqlCacheProvider.<init>(MapTileSqlCacheProvider.java:63) 
                      at org.osmdroid.tileprovider.MapTileProviderBasic.<init>(MapTileProviderBasic.java:88) 
                      at org.osmdroid.tileprovider.MapTileProviderBasic.<init>(MapTileProviderBasic.java:50) 
                      at org.osmdroid.views.MapView.<init>(MapView.java:170) 
                      at org.osmdroid.views.MapView.<init>(MapView.java:200) 
                      at java.lang.reflect.Constructor.constructNative(Native Method) 
                      at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 
                      at android.view.LayoutInflater.createView(LayoutInflater.java:587) 
                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687) 
                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
                      at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:285) 
                      at android.app.Activity.setContentView(Activity.java:1882) 
                      at marine.com.osmsample.MainActivity.onCreate(MainActivity.java:55) 
                      at android.app.Activity.performCreate(Activity.java:5121) 
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1146) 
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2358) 
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2446) 
                      at android.app.ActivityThread.access$600(ActivityThread.java:165) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373) 
                      at android.os.Handler.dispatchMessage(Handler.java:107) 
                      at android.os.Looper.loop(Looper.java:194) 
                      at android.app.ActivityThread.main(ActivityThread.java:5434) 
                      at java.lang.reflect.Method.invokeNative(Native Method) 
                      at java.lang.reflect.Method.invoke(Method.java:525) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:834) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
                      at dalvik.system.NativeStart.main(Native Method) 
10-17 23:03:27.753 26424-26424/marine.com.osmsample E/OsmDroid: Unable to start the sqlite tile writer. Check external storage availability. 
                   android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database 
                    at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method) 
                    at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209) 
                    at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193) 
                    at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463) 
                    at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185) 
                    at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177) 
                    at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804) 
                    at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789) 
                    at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694) 
                    at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:709) 
                    at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:702) 
                    at org.osmdroid.tileprovider.modules.SqlTileWriter.<init>(SqlTileWriter.java:44) 
                    at org.osmdroid.tileprovider.modules.MapTileSqlCacheProvider.<init>(MapTileSqlCacheProvider.java:57) 
                    at org.osmdroid.tileprovider.modules.MapTileSqlCacheProvider.<init>(MapTileSqlCacheProvider.java:63) 
                    at org.osmdroid.tileprovider.MapTileProviderBasic.<init>(MapTileProviderBasic.java:88) 
                    at org.osmdroid.tileprovider.MapTileProviderBasic.<init>(MapTileProviderBasic.java:50) 
                    at org.osmdroid.views.MapView.<init>(MapView.java:170) 
                    at org.osmdroid.views.MapView.<init>(MapView.java:200) 
                    at java.lang.reflect.Constructor.constructNative(Native Method) 
                    at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 
                    at android.view.LayoutInflater.createView(LayoutInflater.java:587) 
                    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687) 
                    at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
                    at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
                    at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
                    at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
                    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:285) 
                    at android.app.Activity.setContentView(Activity.java:1882) 
                    at marine.com.osmsample.MainActivity.onCreate(MainActivity.java:55) 
                    at android.app.Activity.performCreate(Activity.java:5121) 
                    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1146) 
                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2358) 
                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2446) 
                    at android.app.ActivityThread.access$600(ActivityThread.java:165) 
                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1373) 
                    at android.os.Handler.dispatchMessage(Handler.java:107) 
                    at android.os.Looper.loop(Looper.java:194) 
                    at android.app.ActivityThread.main(ActivityThread.java:5434) 
                    at java.lang.reflect.Method.invokeNative(Native Method) 
                    at java.lang.reflect.Method.invoke(Method.java:525) 
                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:834) 
                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
                    at dalvik.system.NativeStart.main(Native Method) 
10-17 23:03:39.774 26424-27015/marine.com.osmsample D/OsmDroid: Unable to store cached tile from Mapnik /14/9291/6359, database not available. 
10-17 23:03:39.792 26424-27015/marine.com.osmsample I/System.out: [CDS]rx timeout:0 
10-17 23:03:39.819 26424-27003/marine.com.osmsample D/OsmDroid: Unable to store cached tile from Mapnik /14/9292/6359, database not available. 
10-17 23:03:39.823 26424-27003/marine.com.osmsample I/System.out: [CDS]rx timeout:0 
10-17 23:03:39.846 26424-27015/marine.com.osmsample D/OsmDroid: Unable to store cached tile from Mapnik /14/9290/6359, database not available. 
10-17 23:03:39.852 26424-27015/marine.com.osmsample I/System.out: [CDS]rx timeout:0 
+0

Только на основании журнала ошибок я бы сказал, что у вас закончилось пространство для карты microSD - возможно, даже во время установки. Очистите место на карте microSD, а затем удалите и установите приложение. Также попробуйте использовать другую карту microSD. –

ответ

2

Какой уровень API это устройство? Это могут быть проблемы с разрешениями. Иногда android также устанавливает Environment.getExternalStorageDir() как только чтение, что неправильно. На днях я собираюсь исправить это с помощью работы.

Работает ли пример приложения от osmdroid? Вам нужно не только запустить его, но и немного увеличить. Пример приложения поставляется с несколькими кэшированными фрагментами.

Рассматривая трассировку стека, Environment.getExternalStorageDir() возвращает точку монтирования только для чтения. Поэтому единственным разумным решением было бы сказать osmdroid использовать другое место для кеша на этом типе устройства. Это можно сделать легко, но это должно быть до того, как будет создано mapview. Эта ссылка имеет API вызовы, чтобы сделать с osmdroid

Using osmdroid without getting access to external storage

Этот ответ https://stackoverflow.com/a/15612964/1203182 имеет много кода, чтобы вернуть список точек монтирования/путей, которые доступны для записи. Это может быть хорошей идеей предложить пользователю спросить, где хранить кеш

Редактировать: Добавлено в osmdroid 5.6, обходной вариант, который обсуждался, был добавлен вместе с образцами в примере приложения «Открыть карту», ​​которое показывает вам как это использовать. Расположение кэша по умолчанию с osmdroid 5.6 и выше - это самый большой записываемый раздел хранения. Это будет сохранен как предпочтение (снова увидеть пример приложения)

+0

пример приложения, загруженного из игрового магазина, отлично работает, но когда я следую учебному пособию и создаю собственное приложение, это не так. Устройство api 19 (Android 4.4) – Ghanendra

+0

обновленный ответ, он должен запустить вас и запустить – spy

+0

. Не могли бы вы взглянуть на другой [запрос] (http://stackoverflow.com/questions/40112165/compass-not-working -properly-in-osmdroid), я отправил в отношении компаса, мне нужна помощь, спасибо! – Ghanendra