Cours 5 - Conception et développement d'applications mobiles (PDF)
Document Details
Uploaded by Deleted User
Université Constantine 2
2019
Dr. Chaouche A.-C.
Tags
Summary
Ce document fournit un cours sur la géolocalisation dans les applications Android. Il expose les différentes API et techniques de géolocalisation. Le document contient des exemples de codes Java.
Full Transcript
Conception et développement d’applications mobiles – Cours 5 – Chapitre 3 : Cartographie et géolocalisation (1/3) API de géolocalisation Dr. CHAOUCHE A...
Conception et développement d’applications mobiles – Cours 5 – Chapitre 3 : Cartographie et géolocalisation (1/3) API de géolocalisation Dr. CHAOUCHE A.-C. Faculté des nouvelles technologies [email protected] Université Constantine 2 2019/2020. Semestre 1 Conception et développement d’applications mobiles – Cours 5 – Chapitre 3 : Cartographie et géolocalisation (1/3) API de géolocalisation Dr. CHAOUCHE A.-C. Faculté des nouvelles technologies [email protected] Etudiants concernés Faculté/Institut Département Niveau Spécialité Nouvelles technologies IFA Master 2 STIC Université Constantine 2 2019/2020. Semestre 1 Résumé Prérequis Maîtrise de la programmation Android Notions sur la géométrie Objectifs du cours Utiliser l’API de géolocalisation de Android Se géolocaliser et s’abonner aux changements de la position Université Constantine 2 © Dr. Chaouche A.-C. 3 Géolocalisation sous Android Université Constantine 2 © Dr. Chaouche A.-C. 4 Techniques de géolocalisation par géocodeur : Base de données des positions (X,Y) par GPS : Satellites par GSM : Antennes GSM par Wi-Fi : Points d'accès par adresse IP : Internet par RFID : Tags RFID Inconvénients à l'utilisation d'une seule technique La dépendance au réseau GPS : l'incapacité de l'utiliser en intérieur et le temps de réponse à l'allumage La dépendance au réseau GSM : sa couverture géographique, l'accès au réseau GPRS pour exploiter l'information La dépendance à la présence de bornes d'accès Wi-Fi : en zone rurale par exemple Université Constantine 2 © Dr. Chaouche A.-C. 5 Techniques de géolocalisation Géolocalisation par GPS GPS = Global Positioning System En utilisant 24 satellites (21 + 3 secours) autour du globe répartis sur 6 orbites Situés à 20 184 km de la surface du globe, parcourent leur orbite en 12 h Émettent à des fréquences dans la bande des micro-ondes (~1500Mhz) Le GPS se synchronise puis calcule la distance avec le satellite grâce à la différence de temps en émission et réception Distance = deltaT * c (célérité du signal dans l'air ~ vitesse de la lumière : ~300 000 km/s) Précision de 15 à 100 mètres Université Constantine 2 © Dr. Chaouche A.-C. 6 Techniques de géolocalisation Géolocalisation par GPS – Triangulation Fonctionnement par triangulation : 3 satellites sont nécessaires pour calculer une position à 2 dimensions 1 satellite supplémentaire par dimension souhaitée (3D → 4 Satellites) Université Constantine 2 © Dr. Chaouche A.-C. 7 Techniques de géolocalisation Géolocalisation par GSM GSM = Global System for Mobile communications En utilisant des relais téléphoniques (GSM) Fonctionne par recouvrement et non triangulation consomme moins d'énergie (batterie) et la réception est meilleure Précision de 200 mètres à plusieurs kilomètres Université Constantine 2 © Dr. Chaouche A.-C. 8 Techniques de géolocalisation Géolocalisation par Wi-Fi Wi-Fi = Wireless Fidelity En utilisant des points d'accès Wi-Fi en se basant sur la puissance du signal (RSSI) de chacun des points d’accès consomme moins d'énergie (batterie) et la réception est meilleure Précision de 1 à 50 mètres Université Constantine 2 © Dr. Chaouche A.-C. 9 Géolocalisation sous Android (1/2) Package android.location La classe LocationManager détermine la position et accède au matériel Ne pas confondre avec Google Location Services API Il est possible de Récupérer les anciennes positions Suivre les mises à jour périodiques de la position Enregistrer une alerte à l’approche d’un point Université Constantine 2 © Dr. Chaouche A.-C. 10 Géolocalisation sous Android (2/2) Etapes de développement : 1. Ajouter des permissions 2. Récupérer le LocationManager 3. Définir et configurer le fournisseur de positions 4. Récupérer sa dernière position connue 5. Récupérer sa position actuelle a) S'abonner aux changements de positions via LocationListener b) Demander sa position actuelle Université Constantine 2 © Dr. Chaouche A.-C. 11 Etapes de la géolocalisation 1. Ajouter des permissions AndroidManifest.xml... // pour utiliser la géolocalisation par GPS // pour utiliser la géolocalisation (WIFI, GSM, 3G,...)... Université Constantine 2 © Dr. Chaouche A.-C. 12 Depuis Android 6.0 – API 23 (1/2) Quelques permissions sont considérées comme "dangereuses" (ACCESS_FINE_LOCATION et ACCESS_COARSE_LOCATION sont parmi elles) Afin de protéger l'utilisateur, les permissions doivent être autorisées en temps réel En autorisant les permissions, l'application se souviendra de cette réponse Université Constantine 2 © Dr. Chaouche A.-C. 13 Depuis Android 6.0 – API 23 (2/2) /java/MainActivity.java... if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 1 requestPermissions(new String[]{ Manifest.permission.ACCESS_FINE_LOCATION},99); 2 } else { // permission autorisée déjà... } @Override 3 public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { if(requestCode==99 && grantResults == PackageManager.PERMISSION_GRANTED){ // permission autorisée... } } Université Constantine 2 © Dr. Chaouche A.-C. 14 Etapes de la géolocalisation 2. Récupérer le LocationManager On fait appel au service Context.LOCATION_SERVICE /java/MainActivity.java... LocationManager lm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);... Université Constantine 2 © Dr. Chaouche A.-C. 15 Etapes de la géolocalisation 3. Définir le fournisseur de positions (1/2) Méthode 1 : En choisissant le fournisseur parmi : LocationManager.GPS_PROVIDER : Receveurs GPS à partir des satellites LocationManager.NETWORK_PROVIDER : Réseau mobile ou Wi-Fi pour une meilleure géolocalisation, notamment pour une géolocalisation indoor (à l'interieur des batiments) LocationManager.PASSIVE_PROVIDER : Permet à d'autres composants de participer à la géolocalisation /java/MainActivity.java... String provider = LocationManager.GPS_PROVIDER;... Université Constantine 2 © Dr. Chaouche A.-C. 16 Etapes de la géolocalisation 3. Définir le fournisseur de positions (2/2) Méthode 2 : Le meilleur fournisseur de position est choisi suivant des critères : /java/MainActivity.java... Criteria cr = new Criteria(); cr.setAccuracy(Criteria.ACCURACY_FINE); // précision cr.setAltitudeRequired(true); // altitude cr.setBearingRequired(true); // direction cr.setCostAllowed(false); // payant/gratuit cr.setPowerRequirement(Criteria.POWER_HIGH); // consommation cr.setSpeedRequired(true); // vitesse String provider = lm.getBestProvider(cr, false);... Université Constantine 2 © Dr. Chaouche A.-C. 17 Etapes de la géolocalisation 4. Récupérer la dernière position connue /java/MainActivity.java... Location loc = lm.getLastKnownLocation(provider); Log.i("GeoFragment", "Le provider " + provider + " a été sélectionné"); if (loc != null){ Log.i("GeoFragment", "position trouvée"); loc.getLongitude(); loc.getLatitude(); loc.getAltitude(); } else Log.i("GeoFragment", "aucune position connue");... Université Constantine 2 © Dr. Chaouche A.-C. 18 Etapes de la géolocalisation 5.a. S'abonner aux changements de positions /java/MainActivity.java... LocationListener locListener = new LocationListener() { public void onLocationChanged(Location location) {... } // quand la localisation de l’utilisateur est mise à jour public void onStatusChanged(String provider,int status,Bundle extras){... } // quand le status d’une source change. // Il existe 3 statuts : OUT_OF_SERVICE, TEMPORARILY_UNAVAILABLE, AVAILABLE public void onProviderEnabled(String provider) {... } // quand une source de localisation est activée (GPS, 3G..etc) public void onProviderDisabled(String provider) {... } // quand une source de localisation est désactivée (GPS, 3G,...) }; Université Constantine 2 © Dr. Chaouche A.-C. 19 Etapes de la géolocalisation 5.b. Demander sa position actuelle /java/MainActivity.java int minTime = 5000; // en millisecondes float minDistance = 10; // en mètres lm.requestLocationUpdates(provider, minTime, minDistance, locationListener); LocationListener locationListener = new LocationListener() { public void onLocationChanged(Location location) { double x = location.getLongitude(); double y = location.getLatitude(); double z = location.getAltitude(); }... } Université Constantine 2 © Dr. Chaouche A.-C. 20 Simuler une position dans l'émulateur Sous l'émulateur d'Android Méthode 1 : Android Studio > Tools > Android > Android Device Monitor > Emulator control > Location controls Méthode 2 : Invité de commande telnet geo fix Sous NOX Coté droit de l'écran > Virtual location Sous GenyMotion Coté droit de l'écran > Widget GPS Université Constantine 2 © Dr. Chaouche A.-C. 21 TP3a : Obtenir des coordonnées géographiques Utilisation de l’API de Android de géolocalisation Université Constantine 2 © Dr. Chaouche A.-C. 22 Quelques liens utiles API de géolocalisation : http://developer.android.com/reference/android/location/package-summary.html Tutorial pour la géolocalisation : http://www.tutos-android.com/geolocalisation-android Université Constantine 2 © Dr. Chaouche A.-C. 23