2011-10-06 3 views
2

이 코드가 잠기는 이유를 찾는 데 어려움을 겪고 있습니다. 내가 아는 한, 아래에 표시된대로 내 매니페스트 파일에서 올바른 사용 권한을 선언하고 있습니다. 나는 실제 장치 (Droid x w./2.3.3)와 AVD를 사용하지 않으려 고 노력했다. 나는 logcat을 첨부하여 classnotfound 예외 상황에 빠지게했다. 프로젝트를 정리하고 maps.jar이 googleapi의 패키지에 포함되어 있는지 확인했습니다.이 패키지는 응용 프로그램의 대상으로도 사용되었습니다. (Google API 2.3.3). 여기에서 어디로 가야할지 모르겠다.ClassNotFoundException MapView를 사용하여 던졌습니다.

Activity Code: 

'package com.SmartPark; 

import java.util.List; 

import android.content.Context; 
import android.graphics.drawable.Drawable; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.os.Handler; 
import android.widget.LinearLayout; 
//import android.widget.TextView; 
import android.widget.Toast; 

import com.google.android.maps.GeoPoint; 
import com.google.android.maps.MapActivity; 
import com.google.android.maps.MapView; 
import com.google.android.maps.Overlay; 
import com.google.android.maps.OverlayItem; 



public class SmartParkActivity extends MapActivity { 
//** Called when the activity is first created. */ 
    LinearLayout linearlayout; 
    MapView mapView; 
    List<Overlay> mapOverlays; 
    Drawable drawable; 
    HelloItemizedOverlay itemizedOverlay; 
    GeoPoint point = new GeoPoint(42392400,-83134700); 
    OverlayItem overlayitem = new OverlayItem(point, "", ""); 
    private LocationManager lm; 
    private LocationListener locationListener; 
    public double[] gps=new double[2]; 
    public boolean setgps; 
    final Handler mHandler = new Handler(); 
    //TextView tvl; //latitude display 
    // TextView tvlong;//longitude display 
    int lat2; 
    int longitude2; 
    public float z; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     mapView = (MapView) findViewById(R.id.mapview); 
     mapView.setBuiltInZoomControls(true); 
     mapOverlays = mapView.getOverlays(); 
     drawable = this.getResources().getDrawable(R.drawable.greendot1); 
     itemizedOverlay = new HelloItemizedOverlay(drawable); 
     OverlayItem overlayitem = new OverlayItem(point, "", ""); 
     itemizedOverlay.addOverlay(overlayitem); 
     mapOverlays.add(itemizedOverlay); 
     // tvl = (TextView) this.findViewById(R.id.gpslview); 
     // tvlong = (TextView) this.findViewById(R.id.gpslongview); 
    } 

    @Override 
    protected boolean isRouteDisplayed() { 

      return false; 
    } 

    @Override 
     protected void onStart() { 
      super.onStart(); 


     lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

     locationListener = new MyLocationListener(); 

     lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 0, 
       locationListener); 

     mHandler.postDelayed(mUpdateTimeTask, 500); 



    } 
    @Override 
    protected void onStop() { 
     super.onStop(); 

     lm.removeUpdates(locationListener); 
     mHandler.removeCallbacks(mUpdateTimeTask); 
     } 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 

     lm.removeUpdates(locationListener); 
     mHandler.removeCallbacks(mUpdateTimeTask); 
     } 






    //} 
// helper method to schedule the postdelayed mhandler at specified interval 
    private boolean foo() { 
     setgps=false; 


     mHandler.postDelayed(mUpdateTimeTask, 500); 

     return true; 
    }; 


    //Method to acquire set gps variable and display it. update overlay if  possible 
    private Runnable mUpdateTimeTask = new Runnable() { 
      public void run() { 

       mapOverlays.clear(); 
       GeoPoint point = setgeopoint(gps[0],gps[1]); 
       OverlayItem overlayitem = new OverlayItem(point, "", ""); 
       mapOverlays.add(itemizedOverlay); 
       itemizedOverlay.addOverlay(overlayitem); 

       // tvl.setText("Latitude:"+gps[0]); 
       // tvlong.setText("Longitude"+gps[1]); 
       // z=(float)android.location.Location.getSpeed(); 
       setgps=foo(); //reschedules the task 

    }; 
    }; 

    //math functions 

    //convert gps double to an int and set to GeoPoint 
    public GeoPoint setgeopoint (double dl, double dlong) { 
     int intl = (int) (dl*1000000); 
     int intlong = (int) (dlong*1000000); 

     GeoPoint point= new GeoPoint (intl, intlong); 
     return point; 
    } 




    public class MyLocationListener implements LocationListener 
    { 
     @Override 
     public void onLocationChanged(Location loc) 
     { 
      if (loc != null) { 
       Toast.makeText(
         getBaseContext(), 
         "Location changed : Lat: " + loc.getLatitude() 
           + " Lng: " + loc.getLongitude(), 
         Toast.LENGTH_SHORT).show(); 
       gps[0]= lat2; 
       gps[1]=longitude2; 
       gps[0] = loc.getLatitude(); 
       gps[1] = loc.getLongitude(); 
       z=loc.getSpeed(); 

      } 
     } 
     public void onProviderDisabled(String provider) 
     { 
      Toast.makeText(getApplicationContext(),"Gps  Disabled",Toast.LENGTH_SHORT).show(); 
     } 
     public void onProviderEnabled(String provider) 
     { 
      Toast.makeText(getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show(); 
     } 
     public void onStatusChanged(String provider, int status, Bundle extras) 
     { 
      Toast.makeText(getApplicationContext(),"Status changed",Toast.LENGTH_SHORT).show(); 
     } 
    } 





}' 

매니페스트 :

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.SmartPark" 
    android:versionCode="1" 
    android:versionName="1.0"> 
<uses-sdk android:minSdkVersion="10" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses- permission> 
    <uses-permission android:name="android.permission.ACCESS_LOCATION"></uses-permission> 
<uses-permission android:name="android.permission.ACCESS_GPS"></uses-permission> 
<uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS"></uses-permission> 
<application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <uses-library android:name="com.google.android.maps" /> 
    <activity android:name=".MapviewActivity" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

    </activity> 
    </application> 

</manifest> 

로그 캣 :

10-06 09:19:07.239: ERROR/AndroidRuntime(13602): java.lang.RuntimeException: Unable to  instantiate activity ComponentInfo{com.SmartPark/com.SmartPark.MapviewActivity}:  java.lang.ClassNotFoundException: com.SmartPark.MapviewActivity in loader  dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/data/app/com.SmartPark-2.apk] 
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1618) 
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1716) 
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):  at android.app.ActivityThread.access$1500(ActivityThread.java:124) 
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):  at  android.app.ActivityThread$H.handleMessage(ActivityThread.java:968) 
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):  at android.os.Handler.dispatchMessage(Handler.java:99) 
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):  at android.os.Looper.loop(Looper.java:123) 
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):  at android.app.ActivityThread.main(ActivityThread.java:3806) 
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):  at java.lang.reflect.Method.invoke(Method.java:507) 
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):  at dalvik.system.NativeStart.main(Native Method) 
10-06 09:19:07.239: ERROR/AndroidRuntime(13602): Caused by: java.lang.ClassNotFoundException: com.SmartPark.MapviewActivity in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/data/app/com.SmartPark-2.apk] 
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):  at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) 
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):  at java.lang.ClassLoader.loadClass(ClassLoader.java:551) 
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):  at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1610) 
10-06 09:19:07.239: ERROR/AndroidRuntime(13602):  ... 11 more 
+0

멋진 프로필 사진. :) –

+0

「이용 도서관」의 소재지에 신경 쓰지 않는다. 나는 잘못된 명단을 올렸다. 같은 오류가있는 응용 프로그램 태그의 자식으로 맵 라이브러리를 이동했습니다. 위에 표시된 고정 매니페스트. 여전히 동일한 오류 – johann316

답변

1

매니페스트에 MapViewActivity이 아니고 MapviewActivity이 아니어야합니까?

+0

라스 베이거스에서 영감을 얻어서! 하나의 프로그램에 두 개의 다른 프로그램을 결합했지만 MapView 액티비티에서 매니페스트를 복사하여 붙여 넣을 때 SmartPark로 액티비티의 이름을 변경하지 않았습니다. DER !!! 저에게 영감을 주신 라스 베이거스에 감사드립니다. 해당 활동 이름은 SmartParkActivity ... NOT MapView 여야합니다. – johann316

2

추가가 ... 응용 프로그램 태그에 라이브러리를 사용 (당신은 활동 태그에 추가 ...)

그래서 안드로이드 매니 페스트가 아래와 같습니다 ::

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.SmartPark" 
    android:versionCode="1" 
    android:versionName="1.0"> 
<uses-sdk android:minSdkVersion="10" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> 
    <uses-permission android:name="android.permission.ACCESS_LOCATION"></uses-permission> 
    <uses-permission android:name="android.permission.ACCESS_GPS"></uses-permission> 
    <uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS"> </uses-permission> 
<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <uses-library android:name="com.google.android.maps"></uses-library> 
    <activity android:name=".SmartParkActivity" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <uses-library android:name="com.google.android.maps" /> 
    </activity> 

</application> 

</manifest> 
+0

그래, 미안, 나는 그것을 시도했지만 여전히 작동하지 않습니다. 같은 오류. 게시 된 매니페스트는 내가 맵 파일을 옮겨 보려고했지만, 여전히 작동하지 않았습니다. 위에 표시된 고정 매니페스트. – johann316

+0

지금 내가 변경 한이 명쾌한 파일을 추가 ....... –

관련 문제