-
28août
Tuto utiliser le capteur GPS de son téléphone android dans ses applications
Dans ce tuto je vais utiliser le capteur GPS de mon téléphone pour afficher ma position, longitude et latitude.
D’abord mon fichier XML pour l’affichage de mes informations
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
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Coordonnée longitude latitude" /> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:stretchColumns="1"> <TableRow> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="coordLong" /> <EditText android:id="@+id/textlong" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Ingredient" android:background="#D4D0C8" android:textColor="#000000" /> </TableRow> <TableRow> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=" " /> </TableRow> <TableRow> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="coordLat" /> <EditText android:id="@+id/textlat" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Ingredient" android:background="#D4D0C8" android:textColor="#000000" /> </TableRow> </TableLayout> </LinearLayout>Pour utiliser mon capteur gps j’utilise la class LocationManager et LocationListener l’ecouteur (listener) des actions du gps. Dans ma méthode onCreate je crée mes deux objets objgps et objlistener.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //---utilisation de la class LocationManager pour le gps--- objgps = (LocationManager)getSystemService(Context.LOCATION_SERVICE); //*************ecouteur ou listener********************* objlistener = new Myobjlistener(); objgps.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, objlistener); //**variable qui pointe sur mes champs d'affichage************* mTxtViewlong = (TextView) findViewById(R.id.textlong); mTxtViewlat = (TextView) findViewById(R.id.textlat); }Dans ma class Myobjlistener qui est une implementation de la class LocationListener s’affiche la longitude et la lattidute dans mes TextView
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
private class Myobjlistener implements LocationListener { public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } public void onLocationChanged(Location location) { //affichage des valeurs dans la les zone de saisie mTxtViewlat.setText(" "+location.getLatitude()); mTxtViewlong.setText(" "+location.getLongitude()); } } }Il ne faut pas oublier dans le fichier AndroidManifest.xml de donner l’autorisation à l’application d’utiliser le capteur GPS avec ces deux lignes
<uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION”></uses-permission>
<uses-permission android:name=”android.permission.ACCESS_MOCK_LOCATION”></uses-permission>1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.gps" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Gps" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"></uses-permission <uses-sdk android:minSdkVersion="3" />; </manifest>code complet
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 org.gps; import android.app.Activity; import android.content.Context; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.widget.TextView; import android.widget.Toast; public class Gps extends Activity { private LocationManager objgps; private LocationListener objlistener; private TextView mTxtViewlong; private TextView mTxtViewlat; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //---utilisation de la class LocationManager pour le gps--- objgps = (LocationManager)getSystemService(Context.LOCATION_SERVICE); //*************ecouteur ou listener********************* objlistener = new Myobjlistener(); objgps.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, objlistener); //**variable qui pointe sur mes champs d'affichage************* mTxtViewlong = (TextView) findViewById(R.id.textlong); mTxtViewlat = (TextView) findViewById(R.id.textlat); } private class Myobjlistener implements LocationListener { public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } public void onLocationChanged(Location location) { //affichage des valeurs dans la les zone de saisie mTxtViewlat.setText(" "+location.getLatitude()); mTxtViewlong.setText(" "+location.getLongitude()); } } }Il est temps de mettre à profit les tutoriels d’Android France:
Passez à la vitesse supérieure et investissez quelques dizaines d’euros pour acquérir les connaissances qui vous feront gagner de l’argent avec vos applications rendez-vous sur notre boutique Android-france pour ces formations en vidéo
Vidéo de formation pour Android
10 commentaires
Laissez un commentaire
Vous devez être identifié pour publier un commentaire.
Connexion - Inscription
S'inscrire











Sympa ces tutoriaux. Une question bête, le gps capte lorsqu’il est dans une poche de pantalon ? Je sais que mon vieux capteur non mais les nouveaux ?
Bonjour,
mon application de récupération des coordonnées longitude et latitude ressemble à la votre, ça marche sur mon émulateur, je peux changer ces coordonnées via :
telnet localhost 5554
geo fix 45 56
tout va bien, sauf que lorsque je mets mon application sur mon téléphone, j’arrive pas à récupérer les valeurs des coordonnées, si vous pouvez m’aider , j’en ai vraiment besoin et merci ?
Salut,
Quels sont les imports à faire ?
La classe myObjListner doit elle etre dans la classe main et après la methode oncreate ?
Merci
Bonjour,
Premierement, merci pour votre tuto
Aprés petite remarque, il faudrait attribuer une valeur lors de votre appel aux mises à jours du GPS
exemple: ici avec un rafraichissement toutes les secondes (1000ms).
//*************ecouteur ou listener*********************
objlistener = new Myobjlistener();
objgps.requestLocationUpdates( LocationManager.GPS_PROVIDER,1000,0,objlistener);
Cela permets de faire moins d’appels au GPS, donc plus ce temps sera grand moins votre application consommera de batterie.
Bonne journée
@Antoine WEBER thx pour cette astuce d’optimisation