Geolocalisation ne fonctionne pas

Fermé
NeoANDROID - 26 juil. 2022 à 15:36
 NeoANDROID - 27 juil. 2022 à 10:14

Bonjour

Je m'amuse depuis quelques temps à programmer des applications sur ANDROID Studio (2021.2.1 Patch 1) avec java.
Je me lance dans la géolocalisation et j'ai un problème. Je tourne un peu en rond.
Voici le contexte (je fais les essais d'apllication sur mon téléphone) :

- J'ai d'abord suivi les consignes des tutos, j'ai donné  des autorisations dans AndroidManifest.xml :
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

- Ensuite j'ai commencé à programmer en java, j'observe les résultats sur wingets TextView, j'ai instancié un  LocationManager  :

 @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Liaision au widget
        TextView Zone_texte_1 = (TextView) findViewById(R.id.Identifiant_TextView_1);
        TextView Zone_texte_2 = (TextView) findViewById(R.id.Identifiant_TextView_2);
        TextView Zone_texte_3 = (TextView) findViewById(R.id.Identifiant_TextView_3);
        TextView Zone_texte_4 = (TextView) findViewById(R.id.Identifiant_TextView_4);
        TextView Zone_texte_5 = (TextView) findViewById(R.id.Identifiant_TextView_5);
        TextView Zone_texte_6 = (TextView) findViewById(R.id.Identifiant_TextView_6);

        // Le manager donne acces au système GPS de l'appareil
        LocationManager Mon_manager_de_location = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

- J'ai compris qu'il y a 3 methodes de  localisation :
Soit on interroge directement le système GPS avec LocationManager.GPS_PROVIDER
Soit on interroge directement le réseau avec LocationManager.NETWORK_PROVIDER
Soit on laisse l'application choisir le meilleur "fournisseur"
J'ai échoué dans les trois cas, je vous présente ma progression dans le programme.

- J'ai vérifié la disponibilité du GPS et du réseau : Dans les deux cas c'était OK.

        // Est ce que le GPS est disponible ?
        if (!Mon_manager_de_location.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
            Zone_texte_1 .setText("GPS non disponible ");
        } else {
            Zone_texte_1 .setText(" OUI. GPS trouvé !");
        }

        // Est ce que le Network est disponible ?
        if (!Mon_manager_de_location.isProviderEnabled(LocationManager.NETWORK_PROVIDER) )
        {
            Zone_texte_2 .setText("Network non disponible ");
        } else {
            Zone_texte_2 .setText(" OUI. Network trouvé !");
        }

- J'ai examiné la liste des fournisseurs, j'obtient : [Passive, gps, network]
  J'ai examiné les fournisseurs disponibles, je n'obtient rien : [ ] (ce qui est mauvais signe me semble-t-il)

        // Donne la liste des fournisseurs : passive, GPS ou Network
        List<String> Liste_fournisseurs = Mon_manager_de_location.getAllProviders();
        Zone_texte_3 .setText(" Liste des fournisseurs : "+ Liste_fournisseurs );
        // Donne la liste des fournisseurs disponible : passive, GPS ou Network
        List<String> Liste_fournisseurs_dispo = Mon_manager_de_location.getProviders(true);
        Zone_texte_4 .setText(" Fournisseurs disponibles : "+  Liste_fournisseurs_dispo);

- D'après ce que j'ai compris, le choix du fournisseur se fait selon des critères à paramétrer.
C'est ce que j'ai fait mais avec peu d'espoir car le contenu de fourniseur est "null", comme vu ci dessus.

        // Il faut établir des critères de fonctionnement du GPS
        Criteria Mes_criteres = new Criteria();
        //Mes_criteres.setAccuracy(Criteria.ACCURACY_FINE);
        Mes_criteres.setAccuracy(Criteria.ACCURACY_COARSE);
        String fournisseur = Mon_manager_de_location.getBestProvider(Mes_criteres, true);
        Zone_texte_5.setText(" le fournisseur est : " + fournisseur);

- Enfin j'ai essayé 5 formes d'acquisitions de localisations, aucune ne fonctionne car mon environnement de programmation les rejète.
Les erreurs disent : autorisations requises ou cannot resolve methode.

     Location Capture_localisation_0 = Mon_manager_de_location.getLastKnownLocation(fournisseur);
        Location Capture_localisation_1 = Mon_manager_de_location.getCurrentLocation(LocationManager.NETWORK_PROVIDER);
        Location Capture_localisation_2 = Mon_manager_de_location.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
        Location Capture_localisation_3 = Mon_manager_de_location.getCurrentLocation(LocationManager.GPS_PROVIDER);
        Location Capture_localisation_4 = Mon_manager_de_location.getLastKnownLocation(LocationManager.GPS_PROVIDER);

J'ai cherché dans tous les sens. Si quelqu'un pouvait me remettre sur les rails. Merci


Windows / Firefox 102.0

A voir également:

2 réponses

BunoCS Messages postés 15495 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 octobre 2024 3 909
26 juil. 2022 à 17:21

Hello,

Tu as un guide de développement ici: https://developer.android.com/training/location


0

Merci.

Je vais lire tout ça.

Je raconterai comment je m'en sort.

0