J'avais déjà essayé d'utiliser le code Google Map Sample Code fourni auparavant dans Google_Play_SERVICE/SAMPLE
en utilisant toutes les options disponibles.
01-14 17: 58: 39.773: API Android E/Google Maps (13114): autorisation échec.
Il m'a montré l'écran vide pour toutes les options de carte d'exemple.
Maintenant, j'ai créé un nouveau projet et voici son code complet: -
Activity.Java
public class MapActivity extends FragmentActivity
{
private Context context = this;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
GoogleMap gMap = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
int result = GooglePlayServicesUtil.isGooglePlayServicesAvailable(context);
Log.e("Maps", "Result int value::" + result);
switch (result) {
case ConnectionResult.SUCCESS:
Log.e("Maps", "RESULT:: SUCCESS");
break;
case ConnectionResult.DEVELOPER_ERROR:
Log.e("Maps", "RESULT:: DE");
break;
case ConnectionResult.INTERNAL_ERROR:
Log.e("Maps", "RESULT:: IE");
break;
case ConnectionResult.INVALID_ACCOUNT:
Log.e("Maps", "RESULT:: IA");
break;
case ConnectionResult.NETWORK_ERROR:
Log.e("Maps", "RESULT:: NE");
break;
case ConnectionResult.RESOLUTION_REQUIRED:
Log.e("Maps", "RESULT:: RR");
break;
case ConnectionResult.SERVICE_DISABLED:
Log.e("Maps", "RESULT:: SD");
break;
case ConnectionResult.SERVICE_INVALID:
Log.e("Maps", "RESULT:: SI");
break;
case ConnectionResult.SERVICE_MISSING:
Log.e("Maps", "RESULT:: SM");
break;
case ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED:
Log.e("Maps", "RESULT:: SVUR");
break;
case ConnectionResult.SIGN_IN_REQUIRED:
Log.e("Maps", "RESULT:: SIR");
break;
default:
break;
}
gMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
gMap.setMyLocationEnabled(true);
Log.e("Maps", "------EOC-------");
}
}
activity_map.xml
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/map"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
class="com.google.Android.gms.maps.SupportMapFragment"/>
Manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="net.dottech.map"
Android:versionCode="1"
Android:versionName="1.0" >
<uses-sdk
Android:maxSdkVersion="17"
Android:minSdkVersion="8"
Android:targetSdkVersion="17" />
<uses-feature
Android:glEsVersion="0x00020000"
Android:required="true" />
<permission
Android:name="net.dottech.map.permission.MAPS_RECEIVE"
Android:protectionLevel="signature" />
<uses-permission Android:name="net.dottech.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="net.dottech.map.MapActivity"
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="removed" />
</application>
</manifest>
LOG
01-21 13:09:09.243: E/Maps(449): Result int value::0
01-21 13:09:09.243: E/Maps(449): RESULT:: SUCCESS
01-21 13:09:09.243: E/Maps(449): ------EOC-------
01-21 13:09:09.248: D/LocationManagerService(1852): gps location requested by an application
01-21 13:09:09.253: D/SensorManager(449): registerListener :: handle = 0 name= K3DH
Acceleration Sensor delay= 20000 Listener= maps.i.a@41a054f8
01-21 13:09:09.353: D/(449): Device driver API match
01-21 13:09:09.353: D/(449): Device driver API version: 10
01-21 13:09:09.353: D/(449): User space API version: 10
01-21 13:09:09.353: D/(449): mali: REVISION=Linux-r2p4-02rel0 BUILD_DATE=Fri May 4 10:32:42 KST 2012
01-21 13:09:12.398: D/Sensors(449): Remain listener = Sending .. normal delay 200ms
01-21 13:09:12.398: I/Sensors(449): sendDelay --- 200000000
01-21 13:09:12.398: I/Sensors(1852): setDelay :: handle = 0 delay = 200000000
01-21 13:09:12.398: D/SensorManager(449): JNI - sendDelay
01-21 16:14:17.835: E/Google Maps Android API(12168): Failed to load map. Could not contact Google servers.
Capture d'écran
Voici le résultat, écran vide avec options de zoom, aucune carte dans MapView.
J'ai suivi chaque étape mentionnée à: -
1.) Tutorial
Vérifiez s'il vous plaît..
vérifiez si le dossier "libs" contenant le "Android-support-v4.jar" existe dans votre projet.
"Android-support-v4.jar" se trouve dans "/extras/Android/compatibility/v4/Android-support-v4.jar" sous votre répertoire "Android-sdk".
Avant d'exécuter votre projet, vous devez définir la cible de génération de votre projet sur "API Google", et non sur Android x.x. version: sélectionnez votre projet et cliquez sur Projet> Propriétés> Projet Cible de construction dans Eclipse, sélectionnez les "API Google" souhaitées, puis exécutez votre projet sur votre téléphone. Si vous utilisez l'émulateur, DOIT également définir l'AVD de l'émulateur sur l'une des "API Google".
Une fois de plus, vous n'avez pas besoin de créer la nouvelle clé d'API Google Maps pour tester votre projet. Il vous suffit d'utiliser la clé d'API fournie par défaut, indiquée comme "Clé pour les applications de navigateur (avec référents)" dans votre console Google APIs. .
Enfin, le plus important est d’ajouter les services Google Play en tant que projet de bibliothèque Android, comme suit:
Sélectionnez Fichier> Importer> Android> Code Android existant dans Workspace et cliquez sur Suivant . Sélectionnez Parcourir ..., entrez/extras/google/google_play_services/libproject/google-play-services_lib, puis cliquez sur Terminer.
J'ai compilé votre code et je fais fonctionner les cartes. Je pense avoir découvert le problème: des informations d'identification erronées ont été mises en cache.
La première fois que j'ai exécuté votre code, il utilisait de mauvaises informations d'identification. Bien que je les aie corrigées, l'erreur "échec de l'autorisation" persistait. Ensuite, j'ai simplement désinstallé l'application, je l'ai exécutée à nouveau, puis les cartes ont fonctionné.
Apparemment, les informations d'identification Google Maps sont mises en cache quelque part. Simpler en exécutant l'application à nouveau ne les écrase pas.
Cela explique aussi pourquoi je ne fais travailler les cartes qu'après avoir exécuté mon autre application en utilisant Debug As (pas Run As) ...
J'ai eu le même problème que vous et les cartes ne fonctionnaient que lorsque vous exécutiez l'application sur un périphérique réel via "Debug As> Android Application".
Je suis un débutant dans le développement Android. Je ne sais pas si c'est comme ça ou s'il nous manque quelque chose:) </ Strike>
Une raison commune à cela est de ne pas enregistrer les clés correctes dans votre console API Google. En particulier, si vous lancez directement à partir d'Eclipse, votre application n'est pas signée avec votre clé de version, mais avec votre clé de débogage. Assurez-vous d'enregistrer les deux empreintes de clé et les noms de paquet dans votre console. Cela aide aussi de vérifier que les noms de vos paquets sont corrects.
Voici un link pour savoir comment trouver l’empreinte de votre certificat de débogage. Regardez sous la section 'Affichage de l'empreinte du certificat de débogage'
Veuillez utiliser la touche Navigateur lorsque vous téléchargez et exécutez le projet exemple à partir d'Internet . La clé Android ne fonctionnera pas dans ce cas et donnera cette erreur.
"Impossible de contacter le serveur. Echec de l'autorisation"
Accédez à votre console API et obtenez la clé de votre navigateur.
Merci
Faites-moi savoir si vous avez des questions concernant Google Maps Api V2
S'il vous plaît voir déjà posté answer sur SO, il va certainement vous aider.
Besoin d'importer un projet de \extras\google\google_play_services\libproject\google-play-services_lib
Mettre à jour :
Make sure your device have Google Play Services apk installed and its version should be > 2
Dites-moi si cela marche pour vous..
Dans ce cas, la clé api n'est pas correcte, la carte google ne s'affiche pas, suivez donc la réponse.
Mettez les métadonnées ci-dessous dans le fichier de menifest Android en premier.
<meta-data
Android:name="com.google.Android.gms.version"
Android:value="@integer/google_play_services_version" />
<meta-data
Android:name="com.google.Android.maps.v2.API_KEY"
Android:value="AIzaSyAU9ShujnIg3IDQxtPrafaf7Q1qOvFVdwNmWc4" />
Et ensuite, mettez la bonne clé Api dans le fichier manifeste.
J'ai compris le problème lié à l'enregistrement du certificat d'application.
Nous avons essayé de signer l’application avec notre propre keystore & alias
. Mais ici, nous devons exactement utiliser le debug.keystore
qui est déjà disponible dans le SDK.