2012-03-31 52 views
1

我试图推出一个非常简单的Android应用程序使用OpenStreetMaps工具为Android,我什么也没有,但运行时错误。简单的osmdroid应用程序不起作用

Android虚拟设备:平台2.2,API级别8,SD卡1024MiB。

我的IDE IntelliJ IDEA的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 [email protected] 
     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.jarosmdroid-Android的3.0.7.jar的android.jar (API 8)库。

怎么了?或者我必须添加到我的项目中?

+0

错误是什么? – 2012-03-31 15:11:07

+0

当我刚刚启动我的应用程序时,它说: “对不起! 应用程序test_osmdroid_005(进程test.osmdroid005)意外停止,请再试一次”。 – Charlie 2012-03-31 15:38:02

回答

4

我不熟悉IntelliJ,因为我使用Eclipse,但认为你的项目中有错误的sl4j jar。你应该使用slf4j-android-1.5.8.jar我想。您不需要Osmdroid地图项目的API密钥 - 只有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并且还删除了带有键的字符串。 但我仍然有同样的错误。 – Charlie 2012-03-31 15:41:31

+0

如果您使用Eclipse,我建议您发布logcat输出。尽管我不知道你在IntelliJ中如何做到这一点。尝试以某种方式捕获错误日志,如果可以,请将其发布到此处。 – NickT 2012-03-31 15:55:23

+0

如果这是我的想法...现在您可以在 – Charlie 2012-03-31 16:04:31