2013-07-26 3 views
0

Я новичок в android.I создаю приложение для MAP и устанавливаю vending.apk и gms.apk в эмуляторе для запуска карты в эмуляторе. А также скопируйте проект google-play-service_lib в моем eclipse и включите google-play-service.zip в папку моего проекта lib и включите google-play-service.jar в проекте. Во время запуска он показывает ошибку. Logcat приведен ниже. Пожалуйста, помогите мне решить эту проблему.Android Map version 2 issue

public class MainActivity extends Activity{ 

      GMapV2GetRouteDirection routedirection; 
      GoogleMap googlemap; 
      MarkerOptions markerOption; 
      LatLng PositionFrom; 
      LatLng PositionTo; 
      Document document; 
      MarkerOptions markerOptions; 
      Location location ; 
      /*static final LatLng Poprad = new LatLng(49.055, 20.299); 
      static final LatLng Prag = new LatLng(50.085, 14.458);*/ 
      private GoogleMap map; 
      @SuppressLint("NewApi") 
      @Override 
      protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       //setContentView(R.layout.activity_main); 
       routedirection=new GMapV2GetRouteDirection(); 
       /*SupportMapFragment mapfragment=(SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); 
       googlemap=mapfragment.getMap();*/ 
       map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 

       googlemap.setMyLocationEnabled(true); 
       googlemap.getUiSettings().setZoomControlsEnabled(true); 
       googlemap.getUiSettings().setCompassEnabled(true); 
       googlemap.getUiSettings().setMyLocationButtonEnabled(true); 
       googlemap.getUiSettings().setAllGesturesEnabled(true); 
       googlemap.setTrafficEnabled(true); 
       googlemap.animateCamera(CameraUpdateFactory.zoomTo(10)); 
       markerOption=new MarkerOptions(); 
       PositionFrom=new LatLng(6777.7,8888.5); 
       PositionTo=new LatLng(4444.3, 3333.4); 
       GetRoutTask getRoute =new GetRoutTask(); 
       getRoute.execute(); 
      } 

      private class GetRoutTask extends AsyncTask<String,Void,String>{ 

       private ProgressDialog pdialog; 
       String response = ""; 

       protected void onPreExecute(){ 
        pdialog=new ProgressDialog(MainActivity.this); 
        pdialog.setMessage("Loading....."); 
        pdialog.show(); 
       } 



       @Override 
       protected String doInBackground(String... params) { 
        // TODO Auto-generated method stub 

       document=routedirection.Getdocument(PositionFrom, PositionTo, GMapV2GetRouteDirection.MODE_DRIVING); 
       response = "Success"; 
       return response; 
       } 

        protected void onPostExecute(String result) { 
         googlemap.clear(); 
         if(response.equalsIgnoreCase("Success")){ 
         ArrayList<LatLng> directionPoint = routedirection.getDirection(document); 
         PolylineOptions rectLine = new PolylineOptions().width(10).color(
            Color.RED); 

         for (int i = 0; i < directionPoint.size(); i++) { 
          rectLine.add(directionPoint.get(i)); 
         } 
         // Adding route on the map 
         googlemap.addPolyline(rectLine); 
         markerOptions.position(PositionFrom); 
         markerOptions.draggable(true); 
         googlemap.addMarker(markerOptions); 

         } 

         pdialog.dismiss(); 
       } 



      } 


      @Override 
      public boolean onCreateOptionsMenu(Menu menu) { 
       // Inflate the menu; this adds items to the action bar if it is present. 
       getMenuInflater().inflate(R.menu.main, menu); 
       return true; 
      } 

     } 

Manifest

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="example.map" 
     android:versionCode="1" 
     android:versionName="1.0" > 

     <uses-sdk 
      android:minSdkVersion="8" 
      android:targetSdkVersion="8" /> 

     <permission 
      android:name="example.map.permission.MAPS_RECEIVE" 
      android:protectionLevel="signature" /> 
     <uses-feature 
      android:glEsVersion="0x00020000" 
      android:required="true" /> 

      <uses-permission android:name="example.map.permission.MAPS_RECEIVE"/> 
      <uses-permission android:name="android.permission.INTERNET"/> 
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
      <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 
      <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
      <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
     <application 
      android:allowBackup="true" 
      android:icon="@drawable/ic_launcher" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme" > 
      <activity 
       android:name="example.map.MainActivity" 
       android:label="@string/app_name" > 
       <intent-filter> 
        <action android:name="android.intent.action.MAIN" /> 

        <category android:name="android.intent.category.LAUNCHER" /> 
       </intent-filter> 
      </activity> 
      <meta-data 
       android:name="com.google.android.maps.v2.API_KEY" 
       android:value="AIzaSyBwP-HgSvM_SqUKYTdP30Jopp6V-z0LZdo"/> 
     </application> 

    </manifest> 

LogCat

07-26 14:24:22.261: W/dalvikvm(860): threadid=1: thread exiting with uncaught exception (group=0x40a13300) 
07-26 14:24:22.291: E/AndroidRuntime(860): FATAL EXCEPTION: main 
07-26 14:24:22.291: E/AndroidRuntime(860): java.lang.RuntimeException: Unable to start activity ComponentInfo{example.map/example.map.MainActivity}: java.lang.NullPointerException 
07-26 14:24:22.291: E/AndroidRuntime(860): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 
07-26 14:24:22.291: E/AndroidRuntime(860): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
07-26 14:24:22.291: E/AndroidRuntime(860): at android.app.ActivityThread.access$600(ActivityThread.java:130) 
07-26 14:24:22.291: E/AndroidRuntime(860): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
07-26 14:24:22.291: E/AndroidRuntime(860): at android.os.Handler.dispatchMessage(Handler.java:99) 
07-26 14:24:22.291: E/AndroidRuntime(860): at android.os.Looper.loop(Looper.java:137) 
07-26 14:24:22.291: E/AndroidRuntime(860): at android.app.ActivityThread.main(ActivityThread.java:4745) 
07-26 14:24:22.291: E/AndroidRuntime(860): at java.lang.reflect.Method.invokeNative(Native Method) 
07-26 14:24:22.291: E/AndroidRuntime(860): at java.lang.reflect.Method.invoke(Method.java:511) 
07-26 14:24:22.291: E/AndroidRuntime(860): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
07-26 14:24:22.291: E/AndroidRuntime(860): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
07-26 14:24:22.291: E/AndroidRuntime(860): at dalvik.system.NativeStart.main(Native Method) 
07-26 14:24:22.291: E/AndroidRuntime(860): Caused by: java.lang.NullPointerException 
07-26 14:24:22.291: E/AndroidRuntime(860): at example.map.MainActivity.onCreate(MainActivity.java:49) 
07-26 14:24:22.291: E/AndroidRuntime(860): at android.app.Activity.performCreate(Activity.java:5008) 
07-26 14:24:22.291: E/AndroidRuntime(860): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
07-26 14:24:22.291: E/AndroidRuntime(860): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 
07-26 14:24:22.291: E/AndroidRuntime(860): ... 11 more 
07-26 14:25:04.591: I/Process(860): Sending signal. PID: 860 SIG: 9 
+0

Я предполагаю, что существует проблема в том, как вы ссылались на проект библиотеки игровых сервисов Google. – Raghunandan

+0

@ Raghunandan. Как я могу ссылаться на сервисы Google Play? – ajay

+0

Вы загрузили сервисы Google Play? – Raghunandan

ответ

0

Вы должны ссылаться на Google Play услуги проекта библиотеки в проекте карте.

Скопируйте проект библиотеки google-play services_lib в рабочее пространство (папка, в которой находится проект вашей карты Android). Проект библиотеки можно найти по следующему пути.

 <android-sdk-folder>/extras/google/google_play_services/libproject/google-play-services_lib library project . 

Импорт библиотека проект вашего затмения

Выберите Файл> Импорт выберите Android> Android Существующего код в рабочую область, а также просматривать ввозное рабочее пространство проекта библиотеки. Вы можете проверить, является ли это проектом библиотеки. Щелкните правой кнопкой мыши на проекте библиотеки. Перейти к свойствам. Нажмите Android на левой панели. Вы увидите, проверена ли библиотека.

Щелкните правой кнопкой мыши на своем проекте Android. Перейти к свойствам. Выберите Android на левой панели. Нажмите «Добавить» и просмотрите проект библиотеки. Выберите то же самое. Нажмите ОК и применить

enter image description here

Edit:

Ваш мин SDK является 8 Таким образом, вы должны использовать SupportMapFragment.

<fragment 
class="com.google.android.gms.maps.SupportMapFragment" 
android:id="@+id/map" 
android:layout_width="match_parent" 
android:layout_height="match_parent"/> 

Ваша деятельность должна быть расширена FragmentActivity.

SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); 
GoogleMap mMap = fm.getMap(); 

Также убедитесь, что вы импортировали ниже

import android.support.v4.app.FragmentActivity; 
import com.google.android.gms.maps.SupportMapFragment; 
+0

Привет, я сделал это. Но в этот раз консоль показывает несоответствие Jar! Исправить ваши зависимости – ajay

+0

Что такое строка 49 в разделе «MainActivity.java». Удалите банки и ссылайтесь на проект библиотеки, как указано выше. – Raghunandan

+0

Я изменил этот путь. Но ошибка такая же. Что я могу сделать? – ajay

0

я думаю, что у вас есть комментарии код для заданного макета для этой деятельности, пожалуйста, проверьте один раз раскомментируйте следующую строку и проверить после этого.

//setContentView(R.layout.activity_main);