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 :

La géolocalisation Android + adresse


Sujet :

API standards et tierces Android

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 66
    Points : 25
    Points
    25
    Par défaut La géolocalisation Android + adresse
    Bonjour à tous,

    Je suis débutant en programmation Android et j'ai un exercice d'un professeur avec la correction sauf que le code de la correction ne marche pas sur mon IDE Android Studio, le professeur n'utilise pas Android Studio alors il ne sait pas qu'est ce qui provoque le problème. J'utilise cet exercice car je dois rendre un projet d'application complète et j'aurais aimé utilisé cette localisation mais comme ça ne marche pas, je viens vers vous car sur le net je ne trouve que des vieux codes qui produisent le même type d'erreur (sûrement un problème de version du SDK minimum ou de version de compilation).
    Visiblement j'ai démarré mon projet avec un SDK minimum en 4.3 (API 18) mais lorsque je compile ça compilerait avec la version 7.0, et même si je recrée un projet ça ne me demande pas la version du compilateur, du coup j'ai installé le pack pour compiler en version 4.4 et lorsque je change la classe R disparait et du coup plein d'erreurs se produisent. Donc j'ai voulu supprimer la version 7.0 mais la erreur interne de l'IDE alors je n'y touche pas non plus.

    Le but de l'exercice étant que lorsque nous cliquons sur un bouton "Position", la position de l'utilisateur s'affiche dans un Toast.
    (D'ailleurs j'aimerais faire afficher l'adresse exacte plutôt que seulement la position dans un EditText, mais on pourra voir cela plus tard).

    Je vais poster le code du professeur avec les commentaires sur le site mais si on résout le problème je le supprimerais car si le professeur tombe dessus ça fait mauvais genre vous croyez pas?

    Code Java :
    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
     
    import android.app.Activity;
    import android.content.Intent;
    import android.content.pm.PackageManager;
    import android.content.pm.ResolveInfo;
    import android.location.Location;
    import android.location.LocationListener;
    import android.location.LocationManager;
    import android.net.Uri;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    import java.util.List;
     
    /*
     * L'activité OuSuiJE permet de mettre en œuvre le service de localisation
     * d'android.
     */
    public class ActiviteOuSuisJe extends Activity
    {
    /*
     * On garde une référence vers le LocationManager et vers le listener qui sera à
     * l'écoute des changements de localisation.
     */
      private LocationManager lm;
      private LocationListener ll;
    /*
     * Nous gardons aussi une référence vers le bouton de notre interface pour
     * contrôler son état d'activation.
     */
      private Button btn;
     
      @Override
      public void onCreate(final Bundle b){
        super.onCreate(b);
        this.setContentView(R.layout.ex3_main);
    /*
     * On récupère une référence vers le bouton de notre interface.
     */
        this.btn = (Button)this.findViewById(R.id.ex3_main_btn);
    /*
     * On récupère une référence vers le LocationManager grace à «l'appel système
     * android» getSystemService().
     */
        this.lm = (LocationManager)this.getSystemService(LOCATION_SERVICE);
    /*
     * On définit ensuite un objet de type LocationListener en implantant ses 4
     * méthodes
     */
        this.ll = new LocationListener() {
    /*
     *  En fait, seule la première méthode nous intéresse dans cet exemple.
     */
                @Override
                public void onLocationChanged(final Location loc) {
    /*
     * Cette méthode récupère la Localisation et on la passe à une méthode
     * utilisataire privée. Pour la traiter.
     */
                  analyseLocation(loc);
    /*
     * On en profite pour réactiver le bouton puisqu'une position a été trouvée.
     */
                  btn.setEnabled(true);
                }
                @Override
                public void onStatusChanged(String arg0, int arg1, Bundle arg2){}
                @Override
                public void onProviderEnabled(String arg0){}
                @Override
                public void onProviderDisabled(String arg0){}
              };
      }
    /*
     * Cette méthode utilitaire prend en paramètre un objet Location. À partir de
     * cet objet Location on crée une URI geo qui identifiera la donnée d'un Intent
     * implicite portant l'action VIEW. Cet intent sera  utilisé pour démarrer une
     * activité de capable d'afficher la position géographique.
     * Comme les applications de cratographie sous Android ne sont pas standard, un
     * téléphone peut très bien ne pas avoir une telle application et dans ce cas
     * startActity() lèvera une Exception, pour éviter cela on utilise le
     * PackageManager.
     */
      private void analyseLocation(final Location l){
        Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:"
                                            +l.getLatitude()+","+l.getLongitude()));
    /*
     * Il n'y a pas en standard dans l'environnement Android d'application
     * de visualisation cartographique. L'application Google Maps que l'on
     * retrouve installé sur la plupart des telephone Android est la
     * propriete de Google et donc n'existe pas en standard sur le
     * simulateur. Il est donc recommande de verifier la presence d'une
     * activite cartographique avant de faire le startActivity pour eviter
     * une exception.
     */
        PackageManager packageManager = getPackageManager();
        List<ResolveInfo> activities = packageManager.queryIntentActivities(i, 0);
        if(activities.size() > 0){
          this.startActivity(i);
        }
      }
    /*
     * La méthode ouSuisJe est appélée par le UIThread chaque foid que l'utilisateur
     * clique sur le bouton de notre interface graphique. (attribut onClick dans le
     * fichier XML).
     */
      public void ouSuisJe(final View v){
    /*
     * On commence par interroger le LocationManager pour voir si une position est
     * déjà connue, grace à la méthode gegetLastKnownLocation(). Comme on ne demande
     * pas une information nouvelle, nous allons utiliser le PASSIVE_PROVIDER pour
     * récupérer notre info.
     */
        final Location l = this.lm.getLastKnownLocation(
                                                  LocationManager.PASSIVE_PROVIDER);
    /*
     * Si l'information n'existe pas ou qu'elle a plus d'une heure, on en redemande
     * une plus fraiche au système.
     */
        if(null == l || (System.currentTimeMillis()-l.getTime() > 3600e3)){
          Toast.makeText(this, "On demande une nouvelle info ("+l
                                                       , Toast.LENGTH_LONG).show();
          v.setEnabled(false);
    /*
     * On enregistre le listener pour une acquisition de position en s'appuyant sur
     * le GPS.
     */
          this.lm.requestSingleUpdate(LocationManager.GPS_PROVIDER, ll, null);
        }
        else{
          Toast.makeText(this, "uses last known location", Toast.LENGTH_LONG).show();
          this.analyseLocation(l);
        }
      }
    }
    layout.xml:
    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:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Position"
            android:hint="Position :"
            android:onClick="ouSuisJe"
            android:id="@+id/ex3_main_btn"
            />
    </LinearLayout>
    string.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <resources>
        <string name="app_name">ED6</string>
        <string name="ousuisje_name">Où suis je ?</string>
    </resources>
    AndroidManifest.xml:
    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="fr.ed7"
          android:versionCode="1"
          android:versionName="1.0">
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
        <application android:label="@string/app_name" >
            <activity android:name="ActiviteOuSuisJe"
                      android:label="@string/ousuisje_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    </manifest>
    Je vais préciser les lignes qui posent problème dans le code Java dans la méthode ouSuisJe() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    final Location l = this.lm.getLastKnownLocation(
                        LocationManager.PASSIVE_PROVIDER);
    Et:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.lm.requestSingleUpdate(LocationManager.GPS_PROVIDER, ll, null);
    Ces lignes ont le message d'erreur suivant :
    Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with `checkPermission`) or explicitly handle a potential `SecurityException`
    This inspection looks at Android API calls that have been annotated with various support annotations (such as RequiresPermission or UiThread) and flags any calls that are not using the API correctly as specified by the annotations.
    Examples of errors flagged by this inspection:
    Passing the wrong type of resource integer (such as R.string) to an API that expects a different type (such as R.dimen).
    Forgetting to invoke the overridden method (via super) in methods that require it
    Calling a method that requires a permission without having declared that permission in the manifest
    Passing a resource color reference to a method which expects an RGB integer value.


    J'ai déjà fait les permissions alors je ne comprends pas bien, j'ai saisie que dans la version 7.0 il faut ajouter quelque chose, mais j'aimerais bien que ça fonctionne et malgré plusieurs recherches sur Internet avec des tutoriels et tout rien ne m'éclaire car ce sont des vieux tutos qui utilisent de vieilles versions, comment faites-vous aujourd'hui?
    Merci à tous pour vos réponses, en vous en remerciant par avance.
    Pikkoro359

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 49
    Points : 49
    Points
    49
    Par défaut
    Bonjour,

    Pour vérifier des permissions dans mon code java j'utilise çà par exemple : (supprime les erreurs à ta ligne) :

    if(Build.VERSION.SDK_INT >= 23) {
    if (this.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
    && this.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

    final Location l = this.lm.getLastKnownLocation(
    LocationManager.PASSIVE_PROVIDER);
    }
    }
    Et j'inclus les demandes d'accès (pour la localisation) en mettant des permissions dans le manifest :

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:name="android.support.multidex.MultiDexApplication"
    package="monPackage">

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    Espérant t'avoir aidé,

    Bonne journée,

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 66
    Points : 25
    Points
    25
    Par défaut
    Salut Regma,

    Merci beaucoup pour ta réponse. Désolé j'ai pas eu le temps de te répondre avant.
    Ta solution ne fait plus d'erreur dans la code Java, puis lorsque je lance l'émulateur l'application se lance correctement mais lorsque je clique sur le bouton là l'application se ferme et à chaque fois ça plante.

    Tu saurais d'où ça peut provenir ?

    J'ai bien mit les 3 permissions dans le manifest comme tu m'as dit aussi.

    Et le code Java j'ai fait comme tu m'as dit, je vais le remettre ici:

    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
     
    import android.Manifest;
    import android.app.Activity;
    import android.content.Intent;
    import android.content.pm.PackageManager;
    import android.content.pm.ResolveInfo;
    import android.location.Location;
    import android.location.LocationListener;
    import android.location.LocationManager;
    import android.net.Uri;
    import android.os.Build;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    import java.util.List;
     
    public class ActiviteOuSuisJe extends Activity {
        private LocationManager lm;
        private LocationListener ll;
        private Button btn;
     
        @Override
        public void onCreate(final Bundle b) {
            super.onCreate(b);
            this.setContentView(R.layout.ex3_main);
            this.btn = (Button)this.findViewById(R.id.ex3_main_btn);
            this.lm = (LocationManager)this.getSystemService(LOCATION_SERVICE);
            this.ll = new LocationListener() {
                @Override
                public void onLocationChanged(final Location loc) {
                    analyseLocation(loc);
                    btn.setEnabled(true);
                }
                @Override
                public void onStatusChanged(String arg0, int arg1, Bundle arg2){}
                @Override
                public void onProviderEnabled(String arg0){}
                @Override
                public void onProviderDisabled(String arg0){}
            };
        }
        private void analyseLocation(final Location l){
            Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:"
                    +l.getLatitude()+","+l.getLongitude()));
            PackageManager packageManager = getPackageManager();
            List<ResolveInfo> activities = packageManager.queryIntentActivities(i, 0);
            if(activities.size() > 0){
                this.startActivity(i);
            }
        }
        public void ouSuisJe(final View v){
     
            Location l = null;
            if(Build.VERSION.SDK_INT >= 23) {
                if (this.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
                        && this.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
     
                    l = this.lm.getLastKnownLocation(
                            LocationManager.PASSIVE_PROVIDER);
                }
            }
     
            if(null == l || (System.currentTimeMillis()-l.getTime() > 3600e3)){
                Toast.makeText(this, "On demande une nouvelle info ("+l
                        , Toast.LENGTH_LONG).show();
                v.setEnabled(false);
     
                this.lm.requestSingleUpdate(LocationManager.GPS_PROVIDER, ll, null);
            }
            else{
                Toast.makeText(this, "uses last known location", Toast.LENGTH_LONG).show();
                this.analyseLocation(l);
            }
        }
    }

  4. #4
    Membre régulier Avatar de vertebre
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 184
    Points : 111
    Points
    111
    Par défaut
    Et j'inclus les demandes d'accès (pour la localisation) en mettant des permissions dans le manifest
    Les 2 dernières sont nécessaires mais pas forcément la première si tu utilise LocationManager

    Sinon ton code fonctionne bien, tu as peut être un problème avec le GPS de l’émulateur ... mais donc j'obtiens bien ton toast
    On demande une nouvelle info (null
    et j'obtiens çà :

    Nom : device-2017-03-25-050002.png
Affichages : 3216
Taille : 33,2 Ko

    as tu essayé avec un vrai smartphone en allumant le GPS ?

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 66
    Points : 25
    Points
    25
    Par défaut
    Salut Vertebre,

    Merci pour ta réponse, effectivement je n'avais pas essayé avec un vrai téléphone, mon émulateur n'est certainement pas configuré pour cela.
    Sur mon téléphone Samsung ça marche c'est cool haha.

    Par contre saurais tu me dire si en changeant un peu le code et le layout si je peux afficher l'adresse exacte dans un TextView.
    Par exemple je laisse le bouton "Position" qui affiche la carte et le Toast (pas forcément le Toast d'ailleurs), puis un autre bouton qui lui affiche dans un TextView la position non pas sous-forme latitude et longitude mais sous forme adresse postale, genre 15 rue des champs-élysées Paris pour citer un exemple.

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 49
    Points : 49
    Points
    49
    Par défaut
    Pour convertir des coordonnées Latitude, Longitude en adresse du type "12 rue de la rue 11011 ville", j'utilise l'API geocoding de Google map.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    geocoder = new Geocoder(this, Locale.getDefault());
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    List<Address> addresses = geocoder.getFromLocation(Double.parseDouble(et_lat.getText().toString()), Double.parseDouble(et_long.getText().toString()), 1);
                String cliAddr ="";
                if(addresses.size() > 0)
                {
                    for (int i=0;i<addresses.get(0).getMaxAddressLineIndex();i++)
                        cliAddr += addresses.get(0).getAddressLine(i)+"\n";
                }
                Toast.makeText(this, "adresse "+cliAddr, Toast.LENGTH_SHORT).show();
    bonne journée à toi,

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 66
    Points : 25
    Points
    25
    Par défaut
    Salut Regma,

    Merci pour ton post, ça m'aide pas mal par contre j'ai 2-3 questions.

    Apparemment tu récupères la latitude et la longitude que l'utilisateur a tapé dans un EditText qui sont et_lat et et_long, exact?
    Ensuite tu affiches l'adresse dans un toast.
    Par contre "cliAddr" ça représente quoi exactement?

    En fait j'ai changé mon layout.
    J'ai mit un premier bouton qui lorsque je clique dessus ça m'affiche la carte (comme le code tout en haut pour lequel tu m'as fournit la vérification de la permission).
    Puis j'ai implanté un deuxième bouton et un TextView. Je voulais utiliser le geocoder dans une nouvelle fonction qui lorsque je clique sur le 2eme bouton cela affiche l'adresse de l'utilisateur dans le TextView.
    Récupérer les coordonnées de l'adresse grâce à la carte? ça je ne sais pas trop, car je ne peux pas demander à l'utilisateur de saisir sa latitude et sa longitude, personnellement je ne connais pas ma latitude et ma longitude actuelle.

    Je peux les récupérer comme ça peut être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    List<Address> addresses = geocoder.getFromLocation(l.getLatitude(), l.getLongitude(), 1);
    Je sais pas si tu as compris?

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 49
    Points : 49
    Points
    49
    Par défaut
    Apparemment tu récupères la latitude et la longitude que l'utilisateur a tapé dans un EditText qui sont et_lat et et_long, exact?
    Ce sont mes edit_text_latitude et idem pour longitude, "et_" = editext_


    Par contre "cliAddr" ça représente quoi exactement?
    cliAddr représente l'adresse en un seule string, résulat de la concaténation tous les élements de List<Address>.


    Je sais pas si tu as compris?
    Pas totalement, mais pour afficher ta position sur la carte c'est passé ta latitude, longitude (ta position actuelle) à la MapActivity, ou plus précisément les ajouter en extra de ton intent.
    Puis tu les récupères et affiche ta position (nouveau marker) sur la carte.


    Une chose que tu pourrai faire est de créer ta propre MapsActivity pour gérer tes traitements :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
    // Ma Map avec le comportement que je souhaite
    }

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 66
    Points : 25
    Points
    25
    Par défaut
    Salut Regma,

    Ok pour ta réponse.
    Je me rééxplique désolé
    Je veux pas afficher l'adresse sur la carte, je veux afficher l'adresse dans un TextView sur mon layout.
    En gros le bouton 1 : il affiche la carte avec la position et le toast (ça c'est bon).
    Et le bouton 2: je voudrais qu'il affiche l'adresse postale de l'utilisateur (sans afficher la latitude et longitude mais en les utilisant pour afficher l'adresse sans demander à l'utilisateur de les saisir), du coup je devrais créer une autre fonction que j'appellerai par exemple adresse(), car ta solution elle convertie les coordonnées latitude et longitude saisie par l'utilisateur c'est bien ça? Alors que j'aimerais juste qu'en cliquant sur le bouton2, l'adresse puisse s'afficher sans passer par la carte, je sais pas si c'est possible de pas passer par la carte pour ça?

  10. #10
    Membre régulier Avatar de vertebre
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 184
    Points : 111
    Points
    111
    Par défaut
    salut,

    car ta solution elle convertie les coordonnées latitude et longitude saisie par l'utilisateur c'est bien ça?
    oui elle les convertie en adresse.

    Alors que j'aimerais juste qu'en cliquant sur le bouton2, l'adresse puisse s'afficher sans passer par la carte, je sais pas si c'est possible de pas passer par la carte pour ça?
    tu n'as pas besoin de passer par la carte pour afficher l'adresse, tu fais une méthode getAdresse(double lat, double long) que tu appelles dans le onclick du bouton 2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private String getAdresse(double latitude, double longitude) {
    String adresse="";
    //on convertit les coordonnées en adresse
    return  adresse;
    }

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 66
    Points : 25
    Points
    25
    Par défaut
    Salut Regma et Vertebre,

    Encore merci pour toutes vos réponses.
    Je me suis servit de vos conseils.

    J'ai créer un nouveau projet donc une nouvelle activité et un nouveau layout pour tester ce que je souhaitais faire mais lorsque je clique sur le bouton ça continue de planter. J'ai dû rater un détail.

    Je poste le code Java:

    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
     
    import android.location.Address;
    import android.location.Geocoder;
    import android.location.Location;
    import android.location.LocationManager;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.widget.TextView;
    import android.widget.Toast;
     
    import java.io.IOException;
    import java.util.List;
    import java.util.Locale;
     
    public class MainActivity extends AppCompatActivity {
     
        private LocationManager lm;
        private Location location;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            this.lm = (LocationManager)this.getSystemService(LOCATION_SERVICE);
        }
     
        public void getAddress(Location location) {
            if(Geocoder.isPresent()) {
                Geocoder geocoder = new Geocoder(MainActivity.this, Locale.getDefault());
                List<Address> addresses = null;
                String addressText = null;
                double latitude = location.getLatitude();
                double longitude = location.getLongitude();
                try {
                    addresses = geocoder.getFromLocation(latitude, longitude, 1);
                } catch (IOException | IllegalArgumentException e) {
                    e.printStackTrace();
                }
     
                if(addresses != null && addresses.size() > 0) {
                    Address address = addresses.get(0);
                    addressText = String.format("%s, %s, %s", address.getMaxAddressLineIndex()
                                    > 0 ? address.getAddressLine(0) : "",
                            address.getLocality(),
                            address.getCountryName(),
                            address.getPostalCode());
                }
                ((TextView)findViewById(R.id.adresse)).setText(addressText);
            } else {
                Toast.makeText(this, "Impossible d'afficher l'adresse", Toast.LENGTH_SHORT).show();
            }
        }
    }
    Voici le layout.xml :
    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Afficher votre adresse"
            android:onClick="getAddress"
            android:id="@+id/b2"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/adresse"
            android:layout_below="@+id/b2"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="10dip"/>
    </RelativeLayout>
    Simple layout mais au moins vous comprendrez peut être mieux.
    Android Studio ne détecte aucune erreur lors de la compilation et quand je Build l'apk tout va bien, ensuite j'installe l'application sur mon téléphone et là aussi ça se passe très bien, puis je peux ouvrir l'application, juste ça plante après avoir cliqué sur le bouton, du coup l'application se ferme.
    Si vous avez encore un peu de temps pour me dire ce qui cloche là dedans, merci à vous.

  12. #12
    Membre régulier Avatar de vertebre
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 184
    Points : 111
    Points
    111
    Par défaut
    Pour savoir quelles erreurs génère ton code, tu vas dans Android monitor > Logcat

    Nom : logcat.PNG
Affichages : 3152
Taille : 19,9 Ko

    J'ai remplacé le onClick xml par un Listenner sur le bouton
    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
     
    import android.app.Activity;
    import android.location.Address;
    import android.location.Geocoder;
    import android.location.Location;
    import android.location.LocationManager;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;
     
    import java.io.IOException;
    import java.util.List;
    import java.util.Locale;
     
    public class MainActivity extends Activity {
     
        private LocationManager lm;
        private Location location;
        Button button;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            this.lm = (LocationManager)this.getSystemService(LOCATION_SERVICE);
            location = new Location("provider");
            button = (Button) findViewById(R.id.b2);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    getAddress(location);
                }
            });
        }
     
        public void getAddress(Location location) {
            if(Geocoder.isPresent()) {
                Geocoder geocoder = new Geocoder(MainActivity.this, Locale.getDefault());
                List<Address> addresses = null;
                String addressText = null;
                double latitude = location.getLatitude();
                double longitude = location.getLongitude();
                Log.d("latitude", String.valueOf(latitude));
                Log.d("longitude", String.valueOf(longitude));
                try {
                    addresses = geocoder.getFromLocation(latitude, longitude, 1);
                } catch (IOException | IllegalArgumentException e) {
                    e.printStackTrace();
                }
     
                if(addresses != null && addresses.size() > 0) {
                    Address address = addresses.get(0);
                    addressText = String.format("%s, %s, %s", address.getMaxAddressLineIndex()
                                    > 0 ? address.getAddressLine(0) : "",
                            address.getLocality(),
                            address.getCountryName(),
                            address.getPostalCode());
                }
                ((TextView)findViewById(R.id.adresse)).setText(addressText);
            } else {
                Toast.makeText(this, "Impossible d'afficher l'adresse", Toast.LENGTH_SHORT).show();
            }
        }
    }
    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
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Afficher votre adresse"
            android:id="@+id/b2"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/adresse"
            android:layout_below="@+id/b2"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="10dip"/>
    </RelativeLayout>
    Dans le manifest
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    android:theme="@style/AppTheme"
    Puis j'ai plaçé des Log.d("", "") pour afficher la latitude et longitude

    Résultat :
    D/latitude: 0.0
    D/longitude: 0.0

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 66
    Points : 25
    Points
    25
    Par défaut
    Salut Vertebre,

    Merci pour ton test, je n'avais pas vu que tu m'avais répondu je viens de le voir.
    ça renvoie une latitude et une longitude de 0.0 ça veut dire que la position n'a pas pu être trouvée? Donc il y a encore une erreur dans mon code, je viens de le tester aussi et la clic sur le bouton ne fait pas planter mais ça n'affiche rien dans le TextView et ça n'affiche pas de Toast non plus bizarre.
    Je devrais peut être remettre les fonction du LocationListener dans le onCreate()?

    Ha oui et pour ce que tu mets dans le Manifest, en fait j'ai pas bien compris pourquoi tu le précisais là?

  14. #14
    Membre régulier Avatar de vertebre
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 184
    Points : 111
    Points
    111
    Par défaut
    Bonjour,

    ça renvoie une latitude et une longitude de 0.0 ça veut dire que la position n'a pas pu être trouvée?
    je penche plutôt pour le fait qu'elle n'a jamais été définie (récupérée).

    Donc il y a encore une erreur dans mon code, je viens de le tester aussi et la clic sur le bouton ne fait pas planter mais ça n'affiche rien dans le TextView et ça n'affiche pas de Toast non plus bizarre.
    En testant rapidement j'ai remarqué çà aussi.

    Je devrais peut être remettre les fonction du LocationListener dans le onCreate()?
    Je n'ai pas testé assez pour te dire d’emblée si oui mais effectivement tu dois résoudre ce problème de latitude et longitude nulle avant de continuer tes traitements

    Ha oui et pour ce que tu mets dans le Manifest, en fait j'ai pas bien compris pourquoi tu le précisais là?
    En fait j'ai extend la class de Activity et non de AppCompatActivity, du coup je prend une erreur sur l'utilisation du thème, et j'ai préféré te le préciser pour t'éviter un problème qui n'a pas rapport avec ton problème original.


    Bonne journée à toi

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 66
    Points : 25
    Points
    25
    Par défaut
    Salut merci Vertèbre pour tes remarques c'est vraiment sympa.

    J'essaie encore de débuguer cela, j'ai rajouter les fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void onLocationChanged(Location location) {}
    public void onProviderDisabled(String provider) {}
    public void onProviderEnabled(String provider) {}
    public void onStatusChanged(String provider, int status, Bundle extras) {}
    Et j'ai rajouter une autre fonction mais je ne sais pas où je pourrais m'en servir, peut être dans onLocationChanged(), je ne sais pas si ça te parait être une bonne idée? En tout cas il manque encore un truc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private void obtenirPosition() {
            location = this.lm.getLastKnownLocation(
                    LocationManager.PASSIVE_PROVIDER);
     
            if (Build.VERSION.SDK_INT >= 23) {
                if (this.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
                        && this.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                    location = this.lm.getLastKnownLocation(
                            LocationManager.PASSIVE_PROVIDER);
                    lm.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER, 60000, 0, MainActivity.this);
                }
            }
        }
    Et j'ai écrit ça aussi au début:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public class MainActivity extends Activity implements LocationListener {
    Je n'arrive toujours pas à faire afficher cette fichu adresse.
    Bon en fait je crois que ça marche bien mais le GPS de mon téléphone semble se déconnecter intempestivement et c'est pour ça que je croyais que ça ne marchait pas.

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 66
    Points : 25
    Points
    25
    Par défaut
    Je repasse par ici pour vous dire que c'était bien résolu, je ne l'avais pas indiqué.

    Si quelqu'un souhaite le code final que j'ai utilisé, postez un message ici ou demandez le moi en privé si ça peut aider d'autres personnes pas de soucis pour ça.

    Merci à vous

  17. #17
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2019
    Messages : 1
    Points : 4
    Points
    4
    Par défaut
    Bonjour se serai pour savoir si vous avez toujour l'application avec le code android studio.
    Si oui pouvez vous me l'envoyer car j'en aurais besoin afin de comprendre la localisation sur android.
    Merci

  18. #18
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2012
    Messages : 100
    Points : 91
    Points
    91
    Par défaut Problème affichage image sur android studion
    Bonjour,

    Je suis en train de réalisé un projet. Dans le dossier Drawable j'ai placé des images mais ces images lorsque j'ai le place comme background ou encore dans une imageview, il est visible dans le projet mais lorsque j'exécute dans un simulateur pour voir le reste ça ne fonctionne pas. L'application plante.

    Je ne sais pas pourquoi.

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2016
    Messages : 66
    Points : 25
    Points
    25
    Par défaut
    Bonjour à tous,

    Cela fait déjà 3 ans que j'ai ouvert ce post et que j'ai résolu mon problème. Si ça peut aider certains d'entre vous, je crois avoir retrouvé l'intégralité de mon code. Par contre je ne l'ai pas retesté avec les dernières mises à jours d'Android Studio et des OS Android donc il est possible que ce code ne fonctionne plus depuis tout ce temps. N'oubliez pas de tester votre code de géolocalisation sur un vrai device (téléphone ou tablette) car l'émulateur n'a pas la fonction de GPS je crois et vérifiez bien sur le téléphone que le GPS est bien activé afin d'être certain que cela fonctionne.

    Code Java : 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
     
    import android.location.Address;
    import android.location.Geocoder;
    import android.location.Location;
    import android.location.LocationListener;
    import android.location.LocationManager;
     
     
    public class JouerActivity extends Activity implements View.OnClickListener, LocationListener {
     
      private LocationManager lManager;
      private LocationListener ll;
      private Location location;
      private Button radarButton, positionAdresse, positionCarte;
     
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_jouer);
     
        lManager = (LocationManager)getSystemService(JouerActivity.this.LOCATION_SERVICE);
     
        positionAdresse = (Button)findViewById(R.id.positionAdresse);
        positionAdresse.setOnClickListener(this);
        positionCarte = (Button)findViewById(R.id.positionCarte);
        positionCarte.setOnClickListener(this);
      }
     
      public void onClick(View v) {
        switch (v.getId()) {
          case R.id.positionCarte:
            position(v);
            break;
          case R.id.positionAdresse:
            afficherAdresse();
            break;
          default:
            break;
        }
      }
     
      private void afficherAdresse() { // Affiche l'adresse postale dans un TextView
        Geocoder geo = new Geocoder(JouerActivity.this);
     
        location = this.lManager.getLastKnownLocation(
        LocationManager.PASSIVE_PROVIDER);
     
        if (Build.VERSION.SDK_INT >= 23) { // Il faut ajouter ce "if" pour que ça marche sur une version 7.0
          if (this.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && this.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { // Et bien vérifier ces permissions (il faut mettre ces permissions aussi dans ton Manifest.xml)
            location = this.lManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
            lManager.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER, 60000, 0, this);
          }
        }
     
        try {
        //Ici on récupère la premiere adresse trouvée gràce à la position que l'on a récupérée
          List<Address> adresses = geo.getFromLocation(location.getLatitude(),
          location.getLongitude(), 1);
     
          if (adresses != null && adresses.size() == 1) {
            Address adresse = adresses.get(0);
            // Si le geocoder a trouvé une adresse, alors on l'affiche
            ((TextView) findViewById(R.id.adresse)).setText(String.format("%s, %s %s",
            adresse.getAddressLine(0),
            adresse.getPostalCode(),
            adresse.getLocality()));
          } else {
            // Sinon on affiche un message d'erreur
            ((TextView) findViewById(R.id.adresse)).setText("L'adresse n'a pu être déterminée");
          }
        } catch (IOException e) {
          e.printStackTrace();
          ((TextView) findViewById(R.id.adresse)).setText("L'adresse n'a pu être déterminée");
        } */
      }
     
      public void position(final View v) { // Cette méthode ouvre Google Map et affiche la position géographique de l'utilisateur sur la carte, un toast te préviens si ça a marché ou pas
        location = this.lManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
        if(Build.VERSION.SDK_INT >= 23) {
          if (this.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && this.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            location = this.lManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
          }
        }
     
        if(null == location || (System.currentTimeMillis()-location.getTime() > 3600e3)) {
          Toast.makeText(this, "Position inconnue" + location, Toast.LENGTH_LONG).show();
          v.setEnabled(false);
          this.lManager.requestSingleUpdate(LocationManager.GPS_PROVIDER, ll, null);
        } else {
          Toast.makeText(this, "Dernière position connue " + (((TextView)this.findViewById(R.id.adresse))).getText(), Toast.LENGTH_LONG).show();
          this.analyseLocation(location);
        }
      }
     
      private void analyseLocation(final Location l) { // Cette méthode est utilisée dans la méthode précédente, c'est pour pouvoir ouvrir l'application Google Map (donc il y a un Intent)
        Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:" + l.getLatitude() + "," + l.getLongitude()));
        PackageManager packageManager = getPackageManager();
        List<ResolveInfo> activities = packageManager.queryIntentActivities(i, 0);
        if(activities.size() > 0) {
          this.startActivity(i);
        }
      }
     
      public void onLocationChanged(Location location) { // Les 4 fonctions qui suivent sont obligatoires dans la documentation Android, même si certaines n'ont rien dedans il faut les mettre
        analyseLocation(location);
        //... on sauvegarde la position
        this.location = location;
        //... et on spécifie au service que l'on ne souhaite plus avoir de mise à jour
        lManager.removeUpdates(this);
      }
     
      public void onProviderDisabled(String provider) {
        //... et on spécifie au service que l'on ne souhaite plus avoir de mise à jour
        lManager.removeUpdates(this);
      }
     
      public void onProviderEnabled(String provider) {
      }
     
      public void onStatusChanged(String provider, int status, Bundle extras) {
      }
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de géolocalisation android
    Par android59 dans le forum API standards et tierces
    Réponses: 18
    Dernier message: 14/01/2014, 12h14
  2. géolocalisation d'adresse : erreur d'analyse XML
    Par jerommm dans le forum IGN API Géoportail
    Réponses: 4
    Dernier message: 02/11/2011, 09h26
  3. Géolocalisation par adresse
    Par ammouna88 dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 19/07/2011, 17h59
  4. [Google Maps] Géolocaliser une adresse postale avec l'API V3
    Par LeonCosnyd dans le forum APIs Google
    Réponses: 0
    Dernier message: 21/09/2010, 14h36
  5. Google map géolocalisation auto depuis adresse.
    Par Lexarino dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 17/10/2008, 12h18

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