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 :
// 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.