Aller au contenu

Récuperation de ses Coordonéees GPS


Kussmaul

Recommended Posts

Salut à tous,

je souhaiterais récupérer mes coordonnée via le GPS de mon téléphone.

Voici mon code :

...
       LocationManager lManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
       LocationListener lListener = new MyLocationListener(); 

       lManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, lListener);   

      public class MyLocationListener implements LocationListener 
      { 

    public void onLocationChanged(Location location) 
    { 
        TextView textViewposition = (TextView) findViewById(R.id.TextViewPosition);
	    maLongitude = ""+location.getLongitude();
	    maLatitude = ""+location.getLatitude();
	    textViewposition.setText(maLongitude+" "+maLatitude);
    } 

    public void onStatusChanged(String provider, int status, Bundle extras)
    {
    }
      }

Mon GPS est bien activé, en fait, je n'ai pas l'impression que la fonction "OnLocationChanged" soit appelé lors du "requestLocationUpdates".

J'ai pris ce code d'un Tuto où le problème de récuperation sur les mobile physique à déjà était reconnu, en fait ça fonctionne que sur les mobile Virtuel.

Quelqu'un à une autre méthode ?

Merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

Salut!

Je vais essayer du mieux que je pourrais...

Déjà, ce qui est étrange (mais ca ne doit pas être la raison de ce problème), c'est qu'Eclipse ne te dise rien malgré que, dans ta classe "MyLocationListener", tu n'as pas redéfini les méthodes "onProviderDisabled" et "onProviderEnabled". Mais si il ne dit rien, c'est qu'elle ne sont pas obligatoires... De toute facon, elle ne te sont pas utiles...

Par contre, un autre détail: lorsque tu appelles la méthode "requestLocationUpdates", le deuxième argument que tu passes est un temps en milliseconde entre chaque actualisation... Alors je ne sais pas si 0 est bien accepté comme argument, mais de toute facon, même si tu veux une actualisation régulière, je pense que 500 est déjà un bon choix (une actualisation toutes les demi secondes!).

Essaye d'augmenter un peu ton délai de raffraichissement et tiens moi au courant...

Enfin, il serait intéressant de voir le début de ton code, pour savoir a quel moment de ton appli tu appelles cette méthode...

Lien vers le commentaire
Partager sur d’autres sites

J'ai le même problème. Voici mon code :

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class ActivityGPS extends Activity {

Double la, lo;
TextView tla, tlo;

   private LocationManager lm;
   private LocationListener locationListener;

   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.catch_monster);

       tla = (TextView) findViewById(R.id.TextView01);
       tlo = (TextView) findViewById(R.id.TextView02);
	la = null;
	lo = null;

       Button b;

       locationListener = new MyLocationListener();
       lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
       lm.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, locationListener);

       b = (Button) findViewById(R.id.Button01);
       b.setOnClickListener(new View.OnClickListener() {
           public void onClick(View v) {
           	refresh();
           }
       });

       b = (Button) findViewById(R.id.Button00);
       b.setOnClickListener(new View.OnClickListener() {
           public void onClick(View v) {
           	finish();
           }
       });
   }

   private class MyLocationListener implements LocationListener 
   {
   	public MyLocationListener()
   	{
           Toast.makeText(getBaseContext(),
           		"Création!",
           		Toast.LENGTH_SHORT)
           		.show();
   	}

       public void onLocationChanged(Location location) {
           if (location != null) {
   			la = location.getLatitude() ;
   			lo = location.getLongitude() ;
   			refresh();
           }
       }

       public void onProviderDisabled(String provider) {
       }

       public void onProviderEnabled(String provider) {
       }

       public void onStatusChanged(String provider, int status, Bundle extras) {
       }
   } 

   private void refresh()
   {
   	if ( this.la != null && this.lo != null ) {

		this.tla.setText("Latitude : >> "+ la.toString() );
       	this.tlo.setText("Longitude : >> "+ lo.toString() );

   	} else {

		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setMessage("Nous n'avons pas pû effectuer la géolocalisation.\n\nÊtes-vous certain d'avoir bien activé votre GPS ?")
	           .setCancelable(false)
	           .setTitle("Erreur de géolocalisation")
	           .setNegativeButton("Tant pis", new DialogInterface.OnClickListener() {
	               public void onClick(DialogInterface dialog, int id) {
	                	dialog.cancel();
	               }
	           })
	           .show();
   	}
   }
}

Et mes permissions :

  • <uses-permission android:name="android.permission.INTERNET"></uses-permission>
  • <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
  • <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
  • <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"></uses-permission>

Sachant aussi que cela fonctionne en NETWORK_PROVIDER. Étrange ?

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...