Google Maps API v2 funktioniert nicht
Ich versuche, eine Anwendung zu erstellen mit Google Maps API v2, aber die Sache ist, die Anwendung gibt mir immer wieder Kraft schließt, obwohl ich alle Folgen Sie die erforderlichen Anweisungen.
Hier ist die android-Teil
import android.support.v4.app.FragmentActivity;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
public class GPSonMap extends FragmentActivity{
MapView map;
MapController controller;
LocationManager locationManager;
LocationListener listener;
PendingIntent pendingIntent ;
Criteria criteria;
MapOverlay overlay;
@Override
public void onCreate(Bundle onsaved)
{
super.onCreate(onsaved);
setContentView(R.layout.map);
Log.d("", "entered");
map = (MapView)findViewById(R.id.mapView);
}
und hier ist die XML -
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MapsActivity" >
<fragment
class="com.google.android.gms.maps.SupportMapFragment"
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</RelativeLayout>
und dies ist mein Manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bachelor.bond"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="17" />
<!-- <permission
android:name="com.example.example.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="com.bachelor.bond.permission.MAPS_RECEIVE"/>. -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<permission android:name="com.example.example.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="com.example.example.permission.C2D_MESSAGE" />
<!-- App receives GCM messages. -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<!-- GCM connects to Google Services. -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<!-- GCM requires a Google account. -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<!-- Keeps the processor from sleeping when a message is received. -->
<uses-permission android:name="android.permission.WAKE_LOCK"
/>
<uses-permission android:name="com.example.example.permission.MAPS_RECEIVE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- Permission to vibrate -->
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name = "android.permission.ACCESS_FINE_LOCATION"/>
<permission
android:name="com.example.example.permission.MAPS_RECEIVE"
android:protectionLevel="signature"></permission>
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name">
<uses-library android:name="com.google.android.maps" />
<activity
android:name=".GPSonMap"
android:label="@string/app_name"
> <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" />
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.example.example" />
</intent-filter>
<receiver android:name="com.google.android.gcm.GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
</receiver>
<service android:name=".GCMIntentService" />
<activity android:name="Login"></activity>
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="****"/>
</application>
</manifest>
Und die Log-Cat Ausgabe
02-15 00:42:35.257: E/AndroidRuntime(2693): FATAL EXCEPTION: main
02-15 00:42:35.257: E/AndroidRuntime(2693): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bachelor.bond/com.dxample.example.GPSonMap}: android.view.InflateException: Binary XML file line #7: Error inflating class fragment
02-15 00:42:35.257: E/AndroidRuntime(2693): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
02-15 00:42:35.257: E/AndroidRuntime(2693): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
02-15 00:42:35.257: E/AndroidRuntime(2693): at android.app.ActivityThread.access$600(ActivityThread.java:141)
02-15 00:42:35.257: E/AndroidRuntime(2693): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
02-15 00:42:35.257: E/AndroidRuntime(2693): at android.os.Handler.dispatchMessage(Handler.java:99)
02-15 00:42:35.257: E/AndroidRuntime(2693): at android.os.Looper.loop(Looper.java:137)
02-15 00:42:35.257: E/AndroidRuntime(2693): at android.app.ActivityThread.main(ActivityThread.java:5039)
02-15 00:42:35.257: E/AndroidRuntime(2693): at java.lang.reflect.Method.invokeNative(Native Method)
02-15 00:42:35.257: E/AndroidRuntime(2693): at java.lang.reflect.Method.invoke(Method.java:511)
02-15 00:42:35.257: E/AndroidRuntime(2693): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
02-15 00:42:35.257: E/AndroidRuntime(2693): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
02-15 00:42:35.257: E/AndroidRuntime(2693): at dalvik.system.NativeStart.main(Native Method)
02-15 00:42:35.257: E/AndroidRuntime(2693): Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class fragment
02-15 00:42:35.257: E/AndroidRuntime(2693): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
02-15 00:42:35.257: E/AndroidRuntime(2693): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
02-15 00:42:35.257: E/AndroidRuntime(2693): at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
02-15 00:42:35.257: E/AndroidRuntime(2693): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
02-15 00:42:35.257: E/AndroidRuntime(2693): at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
02-15 00:42:35.257: E/AndroidRuntime(2693): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270)
02-15 00:42:35.257: E/AndroidRuntime(2693): at android.app.Activity.setContentView(Activity.java:1881)
02-15 00:42:35.257: E/AndroidRuntime(2693): at com.bachelor.bond.GPSonMap.onCreate(GPSonMap.java:54)
02-15 00:42:35.257: E/AndroidRuntime(2693): at android.app.Activity.performCreate(Activity.java:5104)
02-15 00:42:35.257: E/AndroidRuntime(2693): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
02-15 00:42:35.257: E/AndroidRuntime(2693): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
02-15 00:42:35.257: E/AndroidRuntime(2693): ... 11 more
02-15 00:42:35.257: E/AndroidRuntime(2693): Caused by: android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment com.google.android.gms.maps.SupportMapFragment: make sure class name exists, is public, and has an empty constructor that is public
02-15 00:42:35.257: E/AndroidRuntime(2693): at android.support.v4.app.Fragment.instantiate(Fragment.java:401)
02-15 00:42:35.257: E/AndroidRuntime(2693): at android.support.v4.app.Fragment.instantiate(Fragment.java:369)
02-15 00:42:35.257: E/AndroidRuntime(2693): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:272)
02-15 00:42:35.257: E/AndroidRuntime(2693): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676)
02-15 00:42:35.257: E/AndroidRuntime(2693): ... 21 more
02-15 00:42:35.257: E/AndroidRuntime(2693): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.maps.SupportMapFragment" on path: /system/framework/com.google.android.maps.jar:/data/app/com.bachelor.bond-1.apk
02-15 00:42:35.257: E/AndroidRuntime(2693): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65)
02-15 00:42:35.257: E/AndroidRuntime(2693): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
02-15 00:42:35.257: E/AndroidRuntime(2693): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
02-15 00:42:35.257: E/AndroidRuntime(2693): at android.support.v4.app.Fragment.instantiate(Fragment.java:391)
02-15 00:42:35.257: E/AndroidRuntime(2693): ... 24 more
Einem anderen problem, das ich konfrontiert ist, dass wenn ich versuche
import com.google.android.gms.maps.MapFragment;
es gibt eine Fehlermeldung, dass es nicht erkennt, ein Paket-name zu sein com.google.android.gms
so kann ich sogar die GoogleMap
oder MapFragment
zum Beispiel.
Also hat jemand eine Lösung für die 2 Probleme?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vermutlich haben Sie nicht Hinzugefügt haben, einen Verweis auf die Google-Play-Services-Bibliothek-Projekt, um Ihr app-Projekt. Sehen die Google Play Services SDK-Dokumentation, speziell den Abschnitt "so richten Sie ein Projekt zur Nutzung der Google Play services SDK".
google-play-services_lib
Projekt in Eclipse, dann fügen Sie einen Verweis, um es von Projekt - > Eigenschaften > Android > Bibliotheken.google-play-services_lib
Projekt und um die "Bibliothek" Kontrollkästchen aktiviert ist.google-play-services_lib
sollte ein Bibliothek-Projekt. Ihre app ist nicht ein Bibliothek-Projekt., WIE die ANZEIGE der GOOGLE-KARTE per Google Maps API v2 auf Android.
BEACHTEN Sie, dass Alle zwei Fall erforderlich sind, um die Google-Play-Dienst-und Manifest-Datei mit Verschiedenen Berechtigungen und API-Schlüssel.
1. Anzeige Google Karte, (Support) - Fragment.
main.xml
MainActivity.java
2. Anzeige MapView in (Support) - Fragment.
main.xml
MainActivity.java
Fand ich Sie übersehen mehrere Dinge in Ihrem code.
Antwort 1: Ihre GPSonMAP.java muss geändert werden, wie unten;
Nach der änderung der oben genannten, drücken Sie "Strg + Shft + (alphabet) O " und einige benötigten Klassen importiert werden.
Antwort 2: Ihre xml-Datei in das layout muss angepasst werden, wie unten;
Deine MainActivity ist nicht MapsActivity, aber GPSonMap.
Antwort 3: Ihre Manifest-Datei nicht mit Ihrem Paket-Namen mit der beschriebenen package-Namen in der manifest-Datei. Bitte ordnen Sie den Paket-Namen mit der gleiche.
Ändern "com.Beispiel.Beispiel" zu Ihrem Paket-Namen.
Nach dem kopieren und einfügen von einigen codes, die Sie MUSS überprüfen Sie die Paketnamen und Klassennamen mindestens.
Ich hatte dieses problem und war verschwenden Zeit (über 1,5 Tagen an den Haaren ziehen frustration). Dann sah ich ein youtube-video, dabei war ein langweiliger Spaziergang über die Anweisungen zum hinzufügen der Google Play Dienste-app. Nun, in diesem video nach dem hinzufügen der SDK vom sdk-manager, die Sie verwendet die Eclipse - "Check for Updates". Das kleine Stück der Magie ging und die heruntergeladene jar-Datei, die im SDK-Manager nicht tun! Sie wirklich brauchen, um fügen Sie den Anweisungen und speichern Sie die Menschen die frustration. Ich war versucht, entfernen Sie einfach Google Maps aus meiner app. Ich benutzte die 1.0 und ich brauchte, um ein update auf 2.0 oder Graben-Karten.