• 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>

    postiongps 200x300 Tuto utiliser le capteur GPS de son téléphone android dans ses applications Android France

    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

    Guy

    Co-fondateur du site Android france, senior lead developper, passionné de bière et de cigare cubain

    Twitter Google+ 

10 commentaires

  1. 29 août 2009 à 11 h 19 min

    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 ?

  2. 7 novembre 2009 à 15 h 12 min

    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 ?

  3. 14 juin 2010 à 9 h 42 min

    Salut,

    Quels sont les imports à faire ?
    La classe myObjListner doit elle etre dans la classe main et après la methode oncreate ?

    Merci

  4. 23 juin 2011 à 8 h 32 min

    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 ;)

  5. 23 juin 2011 à 8 h 47 min

    @Antoine WEBER thx pour cette astuce d’optimisation

Laissez un commentaire

     Vous devez être identifié pour publier un commentaire.
     Connexion - Inscription