2013-03-09 3 views
-5

Android 개발에서 시작하여 여기에서 https://developers.google.com/maps/documentation/android/intro#sample_code의 샘플 코드로 Google지도로 이동했습니다. 이 사이트의 모든 단계를 내 편에서 따랐으며, 실행하면 에뮬레이터에서이 메시지가 표시됩니다. 불행히도 Google Maps API가 중지되었습니다.불행히도 Google지도 API가 에뮬레이터에서 중지되었습니다

은 여기 내 매니페스트

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.mapdemo" 
    android:versionCode="2" 
    android:versionName="2.1.0"> 
    <permission 
     android:name="com.example.mapdemo.permission.MAPS_RECEIVE" 
     android:protectionLevel="signature"/> 
    <uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE"/> 
    <!-- Copied from Google Maps Library/AndroidManifest.xml. --> 
    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="16"/> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission >android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 
    <!-- External storage for caching. --> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    <!-- My Location --> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
    <!-- Maps API needs OpenGL ES 2.0. --> 
    <uses-feature 
     android:glEsVersion="0x00020000" 
     android:required="true"/> 
    <!-- End of copy. --> 
    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/demo_title" 
     android:hardwareAccelerated="true"> 
     <meta-data 
      android:name="com.google.android.maps.v2.API_KEY" 
      android:value="AIzaSyDYj6PVzqEyVw5ZItRp-PKrVEIb8woTdVc"/> 
     <activity android:name="com.example.mapdemo.MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN"/> 
       <category android:name="android.intent.category.LAUNCHER"/> 
      </intent-filter> 
     </activity> 

     <uses-library android:name="com.google.android.maps"/> 
     <activity 
      android:name=".BasicMapActivity" 
      android:label="@string/basic_map"/> 
     <activity 
      android:name=".CameraDemoActivity" 
      android:label="@string/camera_demo"/> 
     <activity 
      android:name=".CircleDemoActivity" 
      android:label="@string/circle_demo"/> 
     <activity 
      android:name=".EventsDemoActivity" 
      android:label="@string/events_demo"/> 
     <activity 
      android:name=".GroundOverlayDemoActivity" 
      android:label="@string/groundoverlay_demo"/> 
     <activity 
      android:name=".LayersDemoActivity" 
      android:label="@string/layers_demo"/> 
     <activity 
      android:name=".LocationSourceDemoActivity" 
      android:label="@string/locationsource_demo"/> 
     <activity 
      android:name=".MarkerDemoActivity" 
      android:label="@string/marker_demo"/> 
     <activity 
      android:name=".OptionsDemoActivity" 
      android:label="@string/options_demo"/> 
     <activity 
      android:name=".PolygonDemoActivity" 
      android:label="@string/polygon_demo"/> 
     <activity 
      android:name=".PolylineDemoActivity" 
      android:label="@string/polyline_demo"/> 
     <activity 
      android:name=".ProgrammaticDemoActivity" 
      android:label="@string/programmatic_demo"/> 
     <activity 
      android:name=".TileOverlayDemoActivity" 
      android:label="@string/tile_overlay_demo"/> 
     <activity 
      android:name=".UiSettingsDemoActivity" 
      android:label="@string/uisettings_demo"/> 
     <activity 
      android:name=".RawMapViewDemoActivity" 
      android:label="@string/raw_mapview_demo"/> 
     <activity 
      android:name=".RetainMapActivity" 
      android:label="@string/retain_map"/> 
     <activity 
      android:name=".MultiMapDemoActivity" 
      android:label="@string/multi_map_demo"/> 
    </application> 
</manifest> 

입니다 그리고 여기 main.java 파일입니다

package com.example.mapdemo; 

import android.app.ListActivity; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ListAdapter; 
import android.widget.ListView; 

import com.example.mapdemo.view.FeatureView; 
import android.app.Activity; 

public final class MainActivity extends ListActivity { 

    private static class DemoDetails { 
     private final int titleId; 
     private final int descriptionId; 
     private final Class<? extends FragmentActivity> activityClass; 
     public DemoDetails(
       int titleId, int descriptionId, Class<? extends FragmentActivity> >activityClass) { 
      super(); 
      this.titleId = titleId; 
      this.descriptionId = descriptionId; 
      this.activityClass = activityClass; 
     } 
    } 


    private static class CustomArrayAdapter extends ArrayAdapter<DemoDetails> { 
     public CustomArrayAdapter(Context context, DemoDetails[] demos) { 
      super(context, R.layout.feature, R.id.title, demos); 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      FeatureView featureView; 
      if (convertView instanceof FeatureView) { 
       featureView = (FeatureView) convertView; 
      } else { 
       featureView = new FeatureView(getContext()); 
      } 

      DemoDetails demo = getItem(position); 

      featureView.setTitleId(demo.titleId); 
      featureView.setDescriptionId(demo.descriptionId); 

      return featureView; 
     } 
    } 


    private static final DemoDetails[] demos = { 
     new DemoDetails(
      R.string.basic_map, R.string.basic_description, BasicMapActivity.class), 
      new DemoDetails(R.string.camera_demo, R.string.camera_description, 
        CameraDemoActivity.class), 
      new DemoDetails(R.string.events_demo, R.string.events_description, 
        EventsDemoActivity.class), 
      new DemoDetails(R.string.layers_demo, R.string.layers_description, 
        LayersDemoActivity.class), 
      new DemoDetails(
        R.string.locationsource_demo, R.string.locationsource_description, 
        LocationSourceDemoActivity.class), 
      new DemoDetails(R.string.uisettings_demo, R.string.uisettings_description, 
        UiSettingsDemoActivity.class), 
      new DemoDetails(R.string.groundoverlay_demo, >R.string.groundoverlay_description, 
        GroundOverlayDemoActivity.class), 
      new DemoDetails(R.string.marker_demo, R.string.marker_description, 
        MarkerDemoActivity.class), 
      new DemoDetails(R.string.polygon_demo, R.string.polygon_description, 
        PolygonDemoActivity.class), 
      new DemoDetails(R.string.polyline_demo, R.string.polyline_description, 
        PolylineDemoActivity.class), 
      new DemoDetails(R.string.circle_demo, R.string.circle_description, 
        CircleDemoActivity.class), 
      new DemoDetails(R.string.tile_overlay_demo, R.string.tile_overlay_description, 
        TileOverlayDemoActivity.class), 
      new DemoDetails(R.string.options_demo, R.string.options_description, 
        OptionsDemoActivity.class), 
      new DemoDetails(R.string.multi_map_demo, R.string.multi_map_description, 
        MultiMapDemoActivity.class), 
      new DemoDetails(R.string.retain_map, R.string.retain_map_description, 
        RetainMapActivity.class), 
      new DemoDetails(R.string.raw_mapview_demo, R.string.raw_mapview_description, 
        RawMapViewDemoActivity.class), 
      new DemoDetails(R.string.programmatic_demo, R.string.programmatic_description, 
        ProgrammaticDemoActivity.class) 
     }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     ListAdapter adapter = new CustomArrayAdapter(this, demos); 

     setListAdapter(adapter); 
    } 


    @Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     DemoDetails demo = (DemoDetails) getListAdapter().getItem(position); 
     startActivity(new Intent(this, demo.activityClass)); 
    } 
} 

그리고 여기에 main.xml에 파일입니다

<?xml version="1.0" encoding="utf-8"?> 
    <ListView 
    android:id="@android:id/list" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1"/> 
    <TextView 
    android:id="@android:id/empty" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:text="@string/no_demos"/> 
</LinearLayout> 

그리고 여기에 가득 logcat :

03-09 03:09:11.425: W/dalvikvm(2796): Unable to resolve superclass of Lcom/example/mapdemo/BasicMapActivity; (75) 
03-09 03:09:11.425: W/dalvikvm(2796): Link of class 'Lcom/example/mapdemo/BasicMapActivity;' failed 
03-09 03:09:11.455: E/dalvikvm(2796): Could not find class 'com.example.mapdemo.BasicMapActivity', referenced from method com.example.mapdemo.MainActivity.<clinit> 
03-09 03:09:11.455: W/dalvikvm(2796): VFY: unable to resolve const-class 117 (Lcom/example/mapdemo/BasicMapActivity;) in Lcom/example/mapdemo/MainActivity; 
03-09 03:09:11.455: D/dalvikvm(2796): VFY: replacing opcode 0x1c at 0x000d 
03-09 03:09:11.485: W/dalvikvm(2796): Exception Ljava/lang/NoClassDefFoundError; thrown while initializing Lcom/example/mapdemo/MainActivity; 
03-09 03:09:11.555: W/dalvikvm(2796): Class init failed in newInstance call (Lcom/example/mapdemo/MainActivity;) 
03-09 03:09:11.555: D/AndroidRuntime(2796): Shutting down VM 
03-09 03:09:11.555: W/dalvikvm(2796): threadid=1: thread exiting with uncaught exception (group=0x40a71930) 
03-09 03:09:11.585: E/AndroidRuntime(2796): FATAL EXCEPTION: main 
03-09 03:09:11.585: E/AndroidRuntime(2796): java.lang.ExceptionInInitializerError 
03-09 03:09:11.585: E/AndroidRuntime(2796):  at java.lang.Class.newInstanceImpl(Native Method) 
03-09 03:09:11.585: E/AndroidRuntime(2796):  at java.lang.Class.newInstance(Class.java:1319) 
03-09 03:09:11.585: E/AndroidRuntime(2796):  at android.app.Instrumentation.newActivity(Instrumentation.java:1054) 
03-09 03:09:11.585: E/AndroidRuntime(2796):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097) 
03-09 03:09:11.585: E/AndroidRuntime(2796):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
03-09 03:09:11.585: E/AndroidRuntime(2796):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
03-09 03:09:11.585: E/AndroidRuntime(2796):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
03-09 03:09:11.585: E/AndroidRuntime(2796):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-09 03:09:11.585: E/AndroidRuntime(2796):  at android.os.Looper.loop(Looper.java:137) 
03-09 03:09:11.585: E/AndroidRuntime(2796):  at android.app.ActivityThread.main(ActivityThread.java:5041) 
03-09 03:09:11.585: E/AndroidRuntime(2796):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-09 03:09:11.585: E/AndroidRuntime(2796):  at java.lang.reflect.Method.invoke(Method.java:511) 
03-09 03:09:11.585: E/AndroidRuntime(2796):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
03-09 03:09:11.585: E/AndroidRuntime(2796):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
03-09 03:09:11.585: E/AndroidRuntime(2796):  at dalvik.system.NativeStart.main(Native Method) 
03-09 03:09:11.585: E/AndroidRuntime(2796): Caused by: java.lang.NoClassDefFoundError: com.example.mapdemo.BasicMapActivity 
03-09 03:09:11.585: E/AndroidRuntime(2796):  at com.example.mapdemo.MainActivity.<clinit>(MainActivity.java:98) 
03-09 03:09:11.585: E/AndroidRuntime(2796):  ... 15 more 
03-09 03:09:15.014: I/Process(2796): Sending signal. PID: 2796 SIG: 9 

API 17 플랫폼 4.2.2 대상 Google API 및 장치 5.1 "WVGA (480 * 800 : mdpi)와 함께 에뮬레이터를 사용하고 있습니다.

이 문제를 어떻게 해결할 수 있습니까?

나는 또한 에뮬레이터 대신 내 응용 프로그램을 실행하기 위해 Samsung Galaxy Mini 2 S6500을 구입하려고 생각했습니다. 이 장치가 적합할까요?

512MB RAM 및 Android OS, v2.3.6 (Gingerbread), v4.1 로의 업그레이드가 예정되어 있습니다.

+1

스택 오버플로에 오신 것을 환영합니다! 우리는 특정 문제에 도움을 기쁘게 생각하지만 이것은 꽤 일반적으로 보입니다. 가능한 한 문제의 범위를 좁히고 오류를 유발하는 특정 문제를 제시하십시오. 해피 코딩! – chessofnerd

답변

0

this questionthis question 및 Google지도 V2 및 에뮬레이터의 기타 많은 정보에서 Google Maps API를 실행하려면 실제 장치가 필요합니다. 모든 진저 브레드 + 휴대 전화가 작동합니다.

+0

답장을 보내 주셔서 감사합니다. OS Android OS, v2.3.6 (진저 브레드)가있는 Samsung Galaxy mini 2 S6500을 구입할 계획입니다. v4.1로 업그레이드 된 업 그레 이드가 작동 할 것입니다. –

+0

@AhmedBasiouny - 예, 전화가 잘 작동합니다 (지형 오버레이의 경우 조금 느리거나 너무 작을 수도 있지만 기본지도는 괜찮을 것입니다). – ianhanniballake

관련 문제