Простое приложение osmdroid не работает

1

Я пытаюсь запустить очень простое приложение для Android с помощью OpenStreetMaps-Tools для Android, и у меня нет ничего, кроме ошибок времени выполнения.

Android-устройство Android: платформа 2.2, уровень API 8, SD-карта 1024MiB.

Моя IDE - это идея IntelliJ 11.

Вот мой AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="test.osmdroid005"
          android:versionCode="1"
          android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" />
<application
        android:label="@string/app_name" >
    <activity
            android:name=".TestActivity"
            android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>

И main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<org.osmdroid.views.MapView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/mapview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:apiKey="(my-google-key)"
        android:clickable="true"
        />
</LinearLayout>

И TestActivity.java:

package test.osmdroid005;

import android.app.Activity;
import android.os.Bundle;
import org.osmdroid.views.MapView;
import test.osmdroid005.R;

public class TestActivity extends Activity
{
    protected MapView mapView;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mapView = (MapView) findViewById(R.id.mapview);
        mapView.setBuiltInZoomControls(true);
    }
    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return false;
    }
}

Вот журнал ошибок:

    03-31 19:00:19.231: ERROR/vold(27): Error opening switch name path '/sys/class/switch/test' (No such file or directory)
03-31 19:00:19.231: ERROR/vold(27): Error bootstrapping switch '/sys/class/switch/test' (No such file or directory)
03-31 19:00:19.231: ERROR/vold(27): Error opening switch name path '/sys/class/switch/test2' (No such file or directory)
03-31 19:00:19.231: ERROR/vold(27): Error bootstrapping switch '/sys/class/switch/test2' (No such file or directory)
03-31 19:00:32.202: ERROR/BatteryService(52): usbOnlinePath not found
03-31 19:00:32.202: ERROR/BatteryService(52): batteryVoltagePath not found
03-31 19:00:32.202: ERROR/BatteryService(52): batteryTemperaturePath not found
03-31 19:00:32.241: ERROR/SurfaceFlinger(52): Couldn't open /sys/power/wait_for_fb_sleep or /sys/power/wait_for_fb_wake
03-31 19:00:36.791: ERROR/AndroidRuntime(77): ERROR: thread attach failed
03-31 19:00:39.451: ERROR/EventHub(52): could not get driver version for /dev/input/mouse0, Not a typewriter
03-31 19:00:39.451: ERROR/EventHub(52): could not get driver version for /dev/input/mice, Not a typewriter
03-31 19:00:39.731: ERROR/System(52): Failure starting core service
        java.lang.SecurityException
        at android.os.BinderProxy.transact(Native Method)
        at android.os.ServiceManagerProxy.addService(ServiceManagerNative.java:146)
        at android.os.ServiceManager.addService(ServiceManager.java:72)
        at com.android.server.ServerThread.run(SystemServer.java:176)
03-31 19:00:39.751: ERROR/AndroidRuntime(52): Crash logging skipped, no checkin service
03-31 19:00:47.436: ERROR/ActivityThread(114): Failed to find provider info for android.server.checkin
03-31 19:00:49.037: ERROR/ActivityThread(114): Failed to find provider info for android.server.checkin
03-31 19:00:49.127: ERROR/ActivityThread(114): Failed to find provider info for android.server.checkin
03-31 19:00:52.656: ERROR/MediaPlayerService(31): Couldn't open fd for content://settings/system/notification_sound
03-31 19:00:52.686: ERROR/MediaPlayer(52): Unable to to create media player
03-31 19:00:58.476: ERROR/ActivityThread(52): Failed to find provider info for com.google.settings
03-31 19:00:58.476: ERROR/ActivityThread(52): Failed to find provider info for com.google.settings
03-31 19:01:01.207: ERROR/AndroidRuntime(201): ERROR: thread attach failed
03-31 19:01:04.167: ERROR/AndroidRuntime(235): ERROR: thread attach failed
03-31 19:01:04.466: ERROR/AndroidRuntime(249): Uncaught handler: thread main exiting due to uncaught exception
03-31 19:01:04.496: ERROR/AndroidRuntime(249): java.lang.RuntimeException: Unable to start activity ComponentInfo{test.osmdroid005/test.osmdroid005.TestActivity}: android.view.InflateException: Binary XML file line #7: Error inflating class org.osmdroid.views.MapView
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
        at android.app.ActivityThread.access$2200(ActivityThread.java:119)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:123)
        at android.app.ActivityThread.main(ActivityThread.java:4363)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:521)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
        at dalvik.system.NativeStart.main(Native Method)
        Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class org.osmdroid.views.MapView
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:576)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
        at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198)
        at android.app.Activity.setContentView(Activity.java:1622)
        at test.osmdroid005.TestActivity.onCreate(TestActivity.java:19)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
        ... 11 more
        Caused by: java.lang.ClassNotFoundException: org.osmdroid.views.MapView in loader dalvik.system.PathClassLoader@44da2698
        at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
        at android.view.LayoutInflater.createView(LayoutInflater.java:466)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
        ... 20 more

Я также включил slf4j-1.6.1-jul.jar, osmdroid-android-3.0.7.jar и android.jar (API 8).

Что случилось? Или что я должен добавить в свой проект?

  • 0
    в чем ошибка?
  • 0
    Когда я только запускаю свое приложение, оно говорит: «Извините! Приложение test_osmdroid_005 (процесс test.osmdroid005) неожиданно остановилось. Пожалуйста, повторите попытку».
Теги:
intellij-idea
runtime-error
openstreetmap
osmdroid

1 ответ

4
Лучший ответ

Я не знаком с IntelliJ, так как я использую Eclipse, но думаю, что у вас есть неправильный баннер sl4j в вашем проекте. Я думаю, вы должны использовать slf4j-android-1.5.8.jar. Вам не нужен ключ API для проекта карт Osmdroid - это требует только GoogleMaps.

Ниже представлен самый маленький образец Osmdroid, который, по сути, такой же, как у вас, но он центрирует карту для вас к определенному GeoPoint

package osmdemo.demo;

import org.osmdroid.tileprovider.tilesource.TileSourceFactory;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapController;
import org.osmdroid.views.MapView;

import android.app.Activity;
import android.os.Bundle;
public class OsmdroidDemoMap extends Activity {

    private MapView         mMapView;
    private MapController   mMapController;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
            setContentView(R.layout.osm_main);
        mMapView = (MapView) findViewById(R.id.mapview);
        mMapView.setTileSource(TileSourceFactory.MAPNIK);
        mMapView.setBuiltInZoomControls(true);
        mMapController = mMapView.getController();
        mMapController.setZoom(13);
        GeoPoint gPt = new GeoPoint(51500000, -150000);
        //Centre map near to Hyde Park Corner, London
        mMapController.setCenter(gPt);

    }
}

.

  • 0
    Я скачал slf4j-android-1.5.8.jar и изменил slf4j-1.6.1-jul.jar на slf4j-android-1.5.8.jar, а также удалил строку с ключом. Но у меня все та же ошибка.
  • 0
    Если бы вы использовали Eclipse, я бы посоветовал вам опубликовать вывод logcat. Я не знаю, как ты это делаешь в IntelliJ. Попробуйте как-то захватить журнал ошибок и выложить его здесь, если можете.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню