IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Android Discussion :

Récupérer coordonnées GPS plantage


Sujet :

API standards et tierces Android

  1. #1
    Membre régulier

    Homme Profil pro
    Étudiant Réseaux et Télécoms
    Inscrit en
    Octobre 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant Réseaux et Télécoms
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 121
    Points : 92
    Points
    92
    Par défaut Récupérer coordonnées GPS plantage
    Bonjour,

    Mon application plante quand je veux récupérer les coordonnées GPS. Voici ma classe:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    package symplybus.fr;
     
    import android.content.Context;
    import android.location.Location;
    import android.location.LocationListener;
    import android.location.LocationManager;
    import android.os.Bundle;
     
    public class Geolocaliser {
     
    	 Context mContext;
    	 LocationManager locationManager;
    	 double[] x;
    	 int fini;
    	 Geolocaliser(Context mContext){
    	       this.mContext = mContext;
    	  }
     
    	public boolean geolocaliser(double position[])
    	{
     
    		fini=2;
    		x=new double[2];
    		// Acquire a reference to the system Location Manager
    		locationManager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);
     
    		// Define a listener that responds to location updates
    		LocationListener locationListener = new LocationListener() {
    		    public void onLocationChanged(Location location) {
    		      // Called when a new location is found by the network location provider.
    		    	if(location==null)
    		    	{
    		    		fini=3;
    		    	}
    		    	x[0]=location.getLatitude();
    		    	x[1]=location.getLongitude();
    		    	fini=0;
    		    	locationManager.removeUpdates(this);	
     
    		    }
     
    		    public void onStatusChanged(String provider, int status, Bundle extras) {}
     
    		    public void onProviderEnabled(String provider) {
     
    		    }
     
    		    public void onProviderDisabled(String provider) {
    		    	fini=1;
    		    }
    		  };
     
    		// Register the listener with the Location Manager to receive location updates
    		locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);        
    		while(fini==2)
    		{
     
    		if(fini==1 || fini==3)
    		{
    			return false;
    		}
    		else if(fini==0)
    		{
    			position[0]=x[0];
    			position[1]=x[1];
    			return true;
    		}
    		}
     
    		return false;
     
    	}
    }
    Merci de votre aide!

  2. #2
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Pourrais tu nous préciser l'erreur que tu as ? Tu l'as trouveras dans le logcat .

    Merci .
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  3. #3
    Membre régulier

    Homme Profil pro
    Étudiant Réseaux et Télécoms
    Inscrit en
    Octobre 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant Réseaux et Télécoms
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 121
    Points : 92
    Points
    92
    Par défaut
    Honte à moi, je ne savais même pas que çà existait... j'ai honte

    Mon fichier log.txt est en fichier joint.

    Je mets ma classe Géolocalisation qui utilise la méthode geolocaliser().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    package symplybus.fr;
     
     
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
     
    import org.apache.http.NameValuePair;
    import org.apache.http.message.BasicNameValuePair;
     
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.app.ProgressDialog;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.net.Uri;
    import android.os.Bundle;
    import android.os.Handler;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ListView;
    import android.widget.SimpleAdapter;
    import android.widget.AdapterView.OnItemClickListener;
     
    public class Geolocalisation extends Activity implements Runnable {
        /** Called when the activity is first created. */
    	private ListView maListViewPerso;
    	private double position[];
    	private String[][] mArret;
    	private ProgressDialog progressDialog;
    	final Handler uiThreadCallback = new Handler();
    	private HashMap<String, String> map ;
    	Runnable runInUIThread;
     
     
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            progressDialog = new ProgressDialog(this); //On crée un objet ProgressDialog
    		progressDialog.setMessage("Géolocalisation en cours...");//On détermine le message indiquant à l'utilisateur la synchronisation en cours
    		progressDialog.show();//On l'affiche
    		Thread a= new Thread(this);
    		a.start();	 
    	}
     
       public  List<NameValuePair> post()
        {
    	     String a=String.valueOf(position[1]);
    		 String b=String.valueOf(position[0]);
    		 mArret= new String[3][4];
    		 List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); //On crée la liste qui contiendra tous nos paramètres
    		 nameValuePairs.add(new BasicNameValuePair("latitude",a));
    	     nameValuePairs.add(new BasicNameValuePair("longitude",b));
     
    		 return nameValuePairs;
        }
        public void affichage()
        {
        	setContentView(R.layout.geolocalisation);
            maListViewPerso = (ListView) findViewById(R.id.listviewperso);
     
        	ArrayList<HashMap<String, String>> listItem = new ArrayList<HashMap<String, String>>();
     
            //On déclare la HashMap qui contiendra les informations pour un item
            HashMap<String, String> map;
     
            map = new HashMap<String, String>();
            map.put("titre",mArret[0][0]);
            map.put("description", "Distance : " + Integer.parseInt(mArret[0][1]) + " mètres");
            map.put("img", String.valueOf(R.drawable.fleche));
            listItem.add(map);
     
            map = new HashMap<String, String>();
            map.put("titre",mArret[1][0]);
            map.put("description", "Distance : " + Integer.parseInt(mArret[1][1]) + " mètres" );
            map.put("img", String.valueOf(R.drawable.fleche));
            listItem.add(map);
     
            map = new HashMap<String, String>();
            map.put("titre",mArret[2][0]);
            map.put("description", "Distance : " + Integer.parseInt(mArret[2][1]) + " mètres");
            map.put("img", String.valueOf(R.drawable.fleche));
            listItem.add(map);
     
            //Création d'un SimpleAdapter qui se chargera de mettre les items présent dans notre list (listItem) dans la vue affichageitem
            SimpleAdapter mSchedule = new SimpleAdapter(getBaseContext(), listItem, R.layout.affichageitem,
            new String[] {"img", "titre", "description"}, new int[] {R.id.img, R.id.titre, R.id.description});
     
            //On attribut à notre listView l'adapter que l'on vient de créer
            maListViewPerso.setAdapter(mSchedule);
        }
     
        public void ecouter()
        {
        	maListViewPerso.setOnItemClickListener(new OnItemClickListener() {
    			@Override
            	@SuppressWarnings("unchecked")
             	public void onItemClick(AdapterView<?> a, View v, int position, long id) {
    				//on récupère la HashMap contenant les infos de notre item (titre, description, img)
            		map = (HashMap<String, String>) maListViewPerso.getItemAtPosition(position);
            		affichage_choix();
        }
     
        public void affichage_plan()
        {
        	for(int i=0;i<3;i++)
    		{
    		if(map.get("titre").equals(mArret[i][0]))
    		{
    		Intent intent = new Intent(android.content.Intent.ACTION_VIEW,Uri.parse("http://maps.google.com/maps?saddr="+ position[1] +","+ position[0] +"&daddr="+mArret[i][2]+","+mArret[i][3]+""));
    		startActivity(intent);	
    		}
    		}
        }
        public void affichage_choix()
        {
        	//on créer une boite de dialogue
    		AlertDialog.Builder adb;
    		adb = new AlertDialog.Builder(Geolocalisation.this);
    		//on attribut un titre à notre boite de dialogue
    		adb.setTitle("Sélection de l'Arrêt");
    		//on insère un message à notre boite de dialogue, et ici on affiche le titre de l'item cliqué
    		adb.setMessage("Votre choix : "+map.get("titre"));
    		//on indique que l'on veut le bouton ok à notre boite de dialogue
    		adb.setNegativeButton("Plan",new DialogInterface.OnClickListener() {
     
                public void onClick(DialogInterface dialog, int which) {
     
                	affichage_plan();
     
              } });
     
     
     
    		adb.setNeutralButton("Calcul Itineraire",new DialogInterface.OnClickListener(){
     
                public void onClick(DialogInterface dialog, int which) {
     
                	Bundle bundle = new Bundle();
                	bundle.putString("arrets",map.get("titre"));
     
                	Intent newIntent = new Intent(Geolocalisation.this, Avance.class);
                	newIntent.putExtras(bundle);
                	startActivityForResult(newIntent, 0);
     
              } });
     
    		//on affiche la boite de dialogue
    		adb.show();
    	}
     });
        }
        public void affichage_erreurService()
        {
        	progressDialog.dismiss(); //On fait disparaitre l'affichage de progressDialog
     
    		AlertDialog.Builder builder = new AlertDialog.Builder(Geolocalisation.this); //On configure la boîte de dialogue
        	builder.setMessage("Récupération des arrêts les plus proches impossible.") //On lui donne un message
        	       .setCancelable(false)//On peut pas fermer celle-ci sans que l'on appuie sur un bouton
        	       .setTitle("Service inaccessible")//On lui donne un titre
        	       .setPositiveButton("Ok", new DialogInterface.OnClickListener() { //On crée un bouton "ok"
        	           public void onClick(DialogInterface dialog, int id) {
        	               Geolocalisation.this.finish(); //Si on clique sur le bouton, alors on ferme l'application
        	           }
        	       });
     
        	AlertDialog alert = builder.create(); //On crée la boîte de dialogue
        	alert.show(); //On l'affiche
        }
        public void affichage_erreurGps()
        {
     
    		AlertDialog.Builder builder = new AlertDialog.Builder(Geolocalisation.this); //On configure la boîte de dialogue
        	builder.setMessage("Veuillez vérifier que votre GPS est bien activé.") //On lui donne un message
        	       .setCancelable(false)//On peut pas fermer celle-ci sans que l'on appuie sur un bouton
        	       .setTitle("Récupération de votre position impossible")//On lui donne un titre
        	       .setPositiveButton("Ok", new DialogInterface.OnClickListener() { //On crée un bouton "ok"
        	           public void onClick(DialogInterface dialog, int id) {
        	               Geolocalisation.this.finish(); //Si on clique sur le bouton, alors on ferme l'application
        	           }
        	       });
     
        	AlertDialog alert = builder.create(); //On crée la boîte de dialogue
        	alert.show(); //On l'affiche
     
        }
    	@Override
    	public void run() {
    		// TODO Auto-generated method stub
    		position = new double[2];
    			Geolocaliser geo = new Geolocaliser(Geolocalisation.this);
    			if(geo.geolocaliser(position)==true)
    			{
    				 if(Webservice.recuperationArretsProches(post(),mArret)==true)
    				 {
    					 runInUIThread = new Runnable() { //Création de la fonction a éxécuter lorsque la synchronisation sera terminée
     
    							public void run() {
    								affichage();
    								ecouter();
    				    	    }
    						};
    				 }
    				 else
    				 {
    					 runInUIThread = new Runnable() { //Création de la fonction a éxécuter lorsque la synchronisation sera terminée
     
    							public void run() {
     
    								affichage_erreurService();
     
    				    	    }
    						};
    				 }
     
     
     
     
    			}
    			else
    			{
    				runInUIThread = new Runnable() { //Création de la fonction a éxécuter lorsque la synchronisation sera terminée
     
    					public void run() {
     
    						affichage_erreurGps();
     
     
    		    	    }
    				};
     
    			}
     
    			progressDialog.dismiss();
    			uiThreadCallback.post(runInUIThread);
    	}
    }
    Je comprends toujours pas l'erreur.

    Cordialement
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    03-23 13:56:12.729: ERROR/AndroidRuntime(331): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
    03-23 13:56:12.729: ERROR/AndroidRuntime(331):     at android.os.Handler.<init>(Handler.java:121)
    03-23 13:56:12.729: ERROR/AndroidRuntime(331):     at android.location.LocationManager$ListenerTransport$1.<init>(LocationManager.java:139)
    03-23 13:56:12.729: ERROR/AndroidRuntime(331):     at android.location.LocationManager$ListenerTransport.<init>(LocationManager.java:137)
    03-23 13:56:12.729: ERROR/AndroidRuntime(331):     at android.location.LocationManager._requestLocationUpdates(LocationManager.java:708)
    03-23 13:56:12.729: ERROR/AndroidRuntime(331):     at android.location.LocationManager.requestLocationUpdates(LocationManager.java:630)
    03-23 13:56:12.729: ERROR/AndroidRuntime(331):     at symplybus.fr.Geolocaliser.geolocaliser(Geolocaliser.java:54)
    03-23 13:56:12.729: ERROR/AndroidRuntime(331):     at symplybus.fr.Geolocalisation.run(Geolocalisation.java:191)
    03-23 13:56:12.729: ERROR/AndroidRuntime(331):     at java.lang.Thread.run(Thread.java:1096)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Can't create handler inside thread that has not called Looper.prepare()
    Tu as un souci lors de l'affichage des dialogues essaye de ne pas repasser dans un nouveau Runnable.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  5. #5
    Membre régulier

    Homme Profil pro
    Étudiant Réseaux et Télécoms
    Inscrit en
    Octobre 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant Réseaux et Télécoms
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 121
    Points : 92
    Points
    92
    Par défaut
    On a retiré les threads Et ca fonctionne.

    Merci

  6. #6
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Si tu penses que c'est résolu de ton côté n'oublie pas de taggé ton sujet avec le bouton .

    Après je pense que tu avais un problème avec tes handlers et ta gestion des interfaces.

    Regardes ce lien, il explique pas mal le fonctionnement des threads .
    http://developer.android.com/resourc...threading.html

    Par exemple, tu ne peux pas gérer les interfaces à partir d'un thread , pour cela il te faut passer par soit :

    * Activity.runOnUiThread(Runnable)
    * View.post(Runnable)
    * View.postDelayed(Runnable, long)
    * Handler


    Je pense que ton problème venait de là car tu essayer d'afficherdes alertes dialogues dans le Thread et non dans l'UIThread.

    En espérant que cela a pu t'aider .
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  7. #7
    Membre régulier

    Homme Profil pro
    Étudiant Réseaux et Télécoms
    Inscrit en
    Octobre 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant Réseaux et Télécoms
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 121
    Points : 92
    Points
    92
    Par défaut
    Bonjour,

    Je pense pourtant que j'utilisais la bonne méthode:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    uiThreadCallback.post(runInUIThread);
    Donc, là je dépose mon objet Runnable dans l'UI Thread, donc je ne comprends pas pourquoi il y a un problème.

    Cordialement

  8. #8
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,


    Je pense pourtant que j'utilisais la bonne méthode:
    En fait tu utilises un handler ou celui ci appelle un Runnable qui ne fait pas parti de l'UIThread mais bel et bien d'un nouveau thread.
    Si tu veux utiliser cet handler alors celui-ci doit appeler runOnUIThread , ou traiter directement la gestion de l'interface graphique.

    http://developer.android.com/referen...ng.Runnable%29
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    salut!

    je débute Android et je rame sévère!
    j'ai trouvé ton topic intéressant pour moi aussi.

    par contre, comme je ne maitrise encore de loin pas tout, serait-il possible d'avoir un zip du projet complet & fonctionnel (histoires de thread machin chose là)?

    ça m'enlèverait un ENOOOOORME épine du pied!
    j'aurais une base solide à étudier en détails, parce qu'on trouve bien des tutos mais aucun qui fonctionne correctement......

    merci à toi.

    @+

  10. #10
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  11. #11
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    cool , j'ai trouvé celui-là: http://nbenbourahla.developpez.com/t...lemap-android/

    -> j'ai DL me projet & importé dans mon Eclipse

    -> mais j'ai plein d'erreur dues à ces imports non-résolus:
    import com.google.android.maps.GeoPoint;
    import com.google.android.maps.MapActivity;
    import com.google.android.maps.MapController;
    import com.google.android.maps.MapView;

    une explication?

  12. #12
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    une explication?
    Yep, Change l'API lié à ton projet, il te faut l'API Google Maps

    https://developers.google.com/maps/d...ation/android/

    http://developer.android.com/guide/t...ion/index.html
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  13. #13
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    Ok, merci.

    Par contre, la map s'affiche vide, rien, nada, contrairement au prtscr du tuto.
    -> tablette & émulateur
    -> alors que si je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Uri uri=Uri.parse("geo:"+lat+","+lon);
    startActivity(new Intent(Intent.ACTION_VIEW, uri));
    avec les coordonnées (lat & lon) données par le toast du onLocationChanged() ça marche

  14. #14
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Normal

    Une utilise l'application GoogleMaps qui a une clé

    L'autre qui est la tienne doit avoir une clé API Maps plus le use library adéquat dans le manifest

    suis plutôt ce tuto

    http://michel-dirix.developpez.com/t...-maps-android/

    Celui là pour obtenir la clé

    http://mathias-seguy.developpez.com/...-clef-mapview/

    Bon courage
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  15. #15
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    Ok merci , je vais étudier la question et je reviens au besoin!

  16. #16
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    Effectivement, avec la clé c'est mieux!

    Par contre maintenant, autre soucis:
    -> j'ai intégré ce tuto (gps.java & gps.xml) à mon projet global
    -> j'ai 1 fct geoloc(View view) throws SecurityException appellée par mon bouton Géoloc
    -> je sais que je dois créer un objet GPS pour instancier
    ok jusque là!

    -> mais le simple fait de déclarer un objet GPS n'active pas pour autant l'activity GPS (onCreate)...

    Donc, comment faire ça?

  17. #17
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    Bon, ce matin avec la fatigue en moins , je pense avoir les idées + claires.... enfin j'espère!

    En fait, il suffit d'instancier un Intent avec ma classe GPS et de faire un startActivity avec!
    -> pas plus compliqué que ça!
    -> pas du java standard!

  18. #18
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut localisation GPS ok mais carte vide!
    Hello!

    Il y a 2 mois je crois, j'avais suivi ce tuto bien fait de Michel Dirix:

    http://michel-dirix.developpez.com/t...-maps-android/

    Et tout fonctionnait bien!

    Il y a +/- 1 mois j'ai eu un problème sur le fichier debug.keystore de mon profil et j'ai du le regénérer!

    Aujourd'hui je reprends mes travaux de localisation.... "et là, c'est le drame"!
    Ma carte ne s'affiche plus!

    Après 2 secondes de réfléxion, je me souviens de l'épisode du nouveau debug.keystore. Donc je reprends le tuto et refais l'étape md5 checksum & cle API.

    Problème: même avec ma nouvelles clé, ma carte reste vierge(??).

    Dans mon activité principale, j'ai un bouton qui appelle cette fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        public void afficher_carte (View view)
        {
        	Intent i = new Intent(this, AfficherDetailsCarte.class);
        	startActivity(i);
         }
    et ma classeAfficherDetailCarte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
     
    import android.location.Location;
    import android.location.LocationListener;
    import android.location.LocationManager;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.KeyEvent;
    import android.widget.Toast;
     
    import com.google.android.maps.GeoPoint;
    import com.google.android.maps.MapActivity;
    import com.google.android.maps.MapController;
    import com.google.android.maps.MapView;
    import com.google.android.maps.MyLocationOverlay;
     
    public class AfficherDetailsCarte extends MapActivity implements LocationListener 
    {
     
        private MapView mapView = null;
        private LocationManager lm = null;
        private double lat = 0.0;
        private double lon = 0.0;
        private MapController mc = null;
        private MyLocationOverlay myLocation = null;
     
     
        @Override
        public void onCreate(Bundle savedInstanceState) 
        {	
    		boolean affCarte;
     
        	super.onCreate(savedInstanceState);
    		setContentView(R.layout.afficher_details_carte);
     
            mapView = (MapView) this.findViewById(R.id.mapView);
    		mapView.setBuiltInZoomControls(true);
     
    		lm = (LocationManager) this.getSystemService(LOCATION_SERVICE);
    		lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 0, this);
    		lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000, 0,this);
     
    		mc = mapView.getController();
    		mc.setZoom(15);
     
    		myLocation = new MyLocationOverlay(getApplicationContext(), mapView);			
    		myLocation.enableCompass();
    		myLocation.runOnFirstFix(new Runnable() 
    		{
    		    public void run() {
    			mc.animateTo(myLocation.getMyLocation());
    			mc.setZoom(17);
    		    }
    		});
    		mapView.getOverlays().add(myLocation);
        }
     
        @Override
        protected void onResume() 
        {
    		super.onResume();
    		myLocation.enableMyLocation();
    		myLocation.enableCompass();
        }
     
        @Override
        protected boolean isRouteDisplayed() {
    	return false;
        }
     
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) 
        {
    		if (keyCode == KeyEvent.KEYCODE_S) {
    		    mapView.setSatellite(!mapView.isSatellite());
    		    return true;
    	}
    	return super.onKeyDown(keyCode, event);
        }
     
        public void onLocationChanged(Location location) 
        {
    		lat = location.getLatitude();
    		lon = location.getLongitude();
    		Toast.makeText(
    			getBaseContext(),
    			"Location change to : Latitude = " + lat + " Longitude = "
    				+ lon, Toast.LENGTH_SHORT).show();
    		GeoPoint p = new GeoPoint((int) (lat * 1E6), (int) (lon * 1E6));
    		mc.animateTo(p);
    		mc.setCenter(p);
        }
     
     
        public void onProviderDisabled(String provider) 
        {
        }
     
     
        public void onProviderEnabled(String provider) {
        }
     
     
        public void onStatusChanged(String provider, int status, Bundle extras) 
        {
        }  
    }
    et le layout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        >
    <com.google.android.maps.MapView
           android:id="@+id/mapView"
           android:layout_width="fill_parent"
           android:layout_height="fill_parent"
           android:enabled="true"
           android:clickable="true"
           android:apiKey="@string/mapskey"
           />
    </LinearLayout>
    avec, of course, string.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <resources>
        <string name="app_name">TEST</string>
        <string name="mapskey">xxxxxHyRkxcpxxAo1JxxxCUBozyRcD3xxxxxx3Q</string>
    </resources>
    Donc est ce que qq'un aurait déjà eu à faire à ça?

    Vraiment lié à mon problème de debug.keystore?
    Mais cela dit, j'ai bien regénéré une nouvelle clé cet aprèm'...

    Merci.

  19. #19
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Que te signale le LogCat ?

    Tu es bien sûr d'avoir pris le hash MD5, pas le SHA-1 (celui généré par défaut) ?
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  20. #20
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 523
    Points : 147
    Points
    147
    Par défaut
    Aaaah *****, je voulais ouvrir un autre topic, pas fait gaffe! Bref...

    Mais effectivement, le printscreen de Dirix montre du MD5 alors que chez moi c'est du SHA1, bien vu!

    Par contre comment je transforme mon SHA1 en MD5 alors?
    -> un simple convertisseur online?.
    -> genre http://aruljohn.com/hash.php?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Récupérer les coordonnées gps
    Par amset2014 dans le forum Langage
    Réponses: 0
    Dernier message: 25/02/2015, 14h05
  2. récupérer les coordonnées GPS d'un PDA
    Par ibrahimCA dans le forum Windows Mobile
    Réponses: 2
    Dernier message: 26/03/2013, 10h52
  3. Récupérer coordonnées gps Mobil java
    Par dmellorente dans le forum Java ME
    Réponses: 1
    Dernier message: 12/09/2009, 08h19
  4. Récupérer coordonnées gps Mobil java
    Par dmellorente dans le forum Développement Mobile en Java
    Réponses: 0
    Dernier message: 31/07/2009, 09h51
  5. récupérer les coordonnées GPS du PDA
    Par zerocoolyoussef dans le forum Windows Mobile
    Réponses: 10
    Dernier message: 07/04/2008, 22h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo