2. 2
Objectifs spécifiques
S’initier à la notion de services
Comprendre les cycles de vie de services locaux et distants
Se familiariser avec la manipulation des méthodes de services locaux et distants
Eléments de contenu
• Introduction
• Services de géolocalisation
• GPS et Wifi
• Les services de géolocalisation
• Les permission de géolocalisation dans le manifest
• Les gestionnaires de location
• Les fournisseurs de position
• Déterminer votre position
• Suivre le déplacement
• Le géocodage
• Le géocodage inverse
Volume Horaire :
Cours : 3 heures
OBJECTIFS ET ÉLÉMENTS DE CONTENU
Imene Sghaier-Développement Mobile Avancé
3. INTRODUCTION
Google Maps sont utiles que ce soit pour trouver la pharmacie la plus
proche, tracer l'itinéraire entre chez soi et le supermarché ou, encore
mieux, regarder sa propre maison avec les images satellite…
De nos jours tous les dispositifs intelligents sont équipés de puces
GPS. La géolocalisation est ainsi devenue un élément du quotidien
qu'on retrouve dans énormément d'applications.
On peut penser aux applications de navigation aidée par GPS, mais
aussi aux applications sportives qui suivent nos efforts et élaborent
des statistiques, ou encore aux applications pour noter les restaurants
et les situer. On trouve ainsi deux API qui sont liées au concept de
localisation :
Une API qui permet de localiser l'appareil.
Une API qui permet d'afficher des cartes.
3
Imene Sghaier-Développement Mobile Avancé
4. 4
Introduction
Services de géolocalisation
GPS et Wifi
Les permission de géolocalisation dans le manifest
Les gestionnaires de location
Les fournisseurs de position
Déterminer votre position
Suivre le déplacement
Le géocodage
Le géocodage inverse
OBJECTIFS ET ÉLÉMENTS DE CONTENU
Imene Sghaier-Développement Mobile Avancé
5. SERVICES DE GÉOLOCALISATION
Les services de la géolocalisation permettent de :
Déterminer, de contextualiser et de cartographier des
positions géographiques.
Créer des interfaces graphiques fondées sur des cartes.
Offrir un accès complet aux cartes avec le contrôle des
paramètres d’affichage et le changement du niveau de
zoom
Déterminer la position courante de l’appareil et suivre le
déplacement de l’utilisateur.
Lancer des Alertes en se trouvant à une certaine distance
d’un emplacement donné.
5
Imene Sghaier-Développement Mobile Avancé
6. SERVICES DE GÉOLOCALISATION
La géolocalisation sous Android est fournie à l’aide de deux
API :
L’API de localisation du terminal qui communique avec la puce GPS
(Global Positioning System).
L’API d’affichage des cartes qui représente graphiquement les
informations issues du service précédent.
6
Imene Sghaier-Développement Mobile Avancé
7. 7
Introduction
Services de géolocalisation
GPS et Wifi
Les permissions de géolocalisation dans le manifest
Les gestionnaires de location
Les fournisseurs de position
Déterminer votre position
Suivre le déplacement
Le géocodage
Le géocodage inverse
OBJECTIFS ET ÉLÉMENTS DE CONTENU
Imene Sghaier-Développement Mobile Avancé
8. GPS ET WI-FI
GPS: Global Positionning System
Plus de 24 satellites tournant autour de la terre et diffusant
leur position et l'heure de diffusion
Pour géo-localiser un point on utilise soit un GPS soit les
réseaux téléphoniques cellulaires et le Wi-Fi
Le GPS affaiblit la batterie.
On peut nous servir des points d'accès WiFi à proximité et
de la distance mesurée avec les antennes relais du réseau
mobile les plus proches (par triangulation): ils utilisent
moins de puissance électrique, fonctionnent à l'intérieur et
à l'extérieur, et sont plus rapides que le GPS.
8
Imene Sghaier-Développement Mobile Avancé
9. 9
Introduction
Services de géolocalisation
GPS et Wifi
Les permissions de géolocalisation dans le
manifest
Les gestionnaires de location
Les fournisseurs de position
Déterminer votre position
Suivre le déplacement
Le géocodage
Le géocodage inverse
OBJECTIFS ET ÉLÉMENTS DE CONTENU
Imene Sghaier-Développement Mobile Avancé
10. PERMISSIONS DE GÉOLOCALISATION DANS LE MANIFEST
Dans le manifest il faut ajouter la permission
ACCESS_FINE_LOCATION pour utiliser la géolocalisation par
GPS
Et il faut ajouter la permission ACCESS_COARSE_LOCATION
pour une localisation plus imprécise par WiFi et antennes relais.
Pour utiliser les deux types de localisation, vous pouvez
déclarer uniquement ACCESS_FINE_LOCATION, qui comprend
toujours ACCESS_COARSE_LOCATION :
Il faut bien évidement ajouter
10
Imene Sghaier-Développement Mobile Avancé
<uses-permission android:name=
"android.permission.ACCESS_FINE_LOCATION" />
11. 11
Introduction
Services de géolocalisation
GPS et Wifi
Permissions de géolocalisation dans le manifest
Les gestionnaires de location
Les fournisseurs de position
Déterminer votre position
Suivre le déplacement
Le géocodage
Le géocodage inverse
OBJECTIFS ET ÉLÉMENTS DE CONTENU
Imene Sghaier-Développement Mobile Avancé
12. GESTIONNAIRE DE LOCATION
Le premier élément principal est le gestionnaire de
location LocationManager: qui fournit des points
d’entrée («hooks») vers les services de géolocalisation.
Il permet de :
obtenir votre position courante ;
suivre des déplacements ;
déclencher des alertes de proximité en détectant
les mouvements dans une zone spécifique ;
Trouver les Location Providers disponibles.
12
Imene Sghaier-Développement Mobile Avancé
13. 13
Introduction
Services de géolocalisation
GPS et Wifi
Permissions de géolocalisation dans le manifest
Les gestionnaires de location
Les fournisseurs de position
GPS
Réseaux mobiles
Passifs
Liste
Critère de choix
Déterminer votre position
Suivre le déplacement
Le géocodage
Le géocodage inverse
OBJECTIFS ET ÉLÉMENTS DE CONTENU
Imene Sghaier-Développement Mobile Avancé
14. FOURNISSEURS DE POSITION
Le deuxième élément principal est représenté par les
fournisseurs de position : LocationProvider: Chacun
d’eux représente une technologie de localisation de la
position de l’appareil.
De manière générale, nous distinguons deux types de
fournisseurs naturels :
Le fournisseur basé sur la technologie GPS, de type
LocationManager.GPS_PROVIDER. C'est le plus précis des
deux, mais c'est également le plus consommateur en terme
de batterie.
Le fournisseur qui se repère grâce aux antennes des
opérateurs mobiles et aux points d'accès WI-FI, de type
LocationManager.NETWORK_PROVIDER.
14
Imene Sghaier-Développement Mobile Avancé
15. FOURNISSEURS DE POSITION
LocationProvider est une classe abstraite qui offre
plusieurs moyens de localisation à travers une liste de
fournisseurs.
Chacun offre diverses caractéristiques en matière de
consommation d’énergie, de coût, de précision et de
capacité à déterminer l’altitude, la vitesse.
Pour récupérer une instance:
15
Imene Sghaier-Développement Mobile Avancé
instance:
LocationProvider g=locationManager.getProvider(LocationManager.GPS_PROVIDER);
LocationProvider n=locationManager.getProvider(LocationManager.NETWORK_PROVIDER);
LocationProvider p=locationManager.getProvider(LocationManager.PASSIVE_PROVIDER);
16. FOURNISSEURS DE POSITION: GPS
La localisation s'effectue par la réception de signaux provenant
de plusieurs satellites qui se trouve en orbite. Le téléphone
mobile équipé d'un GPS permettra de transmettre sa position via
un réseau.
Précision de quelques mètres.
Solution coûteuse en énergie (batterie).
Nécessite la permission ACCESS_FINE_LOCATION.
16
Imene Sghaier-Développement Mobile Avancé
17. FOURNISSEURS DE POSITION: RÉSEAU MOBILE
Détermine l'emplacement en fonction de la disponibilité de l’antenne de
téléphonie cellulaire et des points d'accès WiFi.
Les résultats sont récupérés au moyen d'une recherche des points
d'accès Wifi à proximité et de la distance mesurée avec les antennes du
réseau mobile les plus proches.
La position est d’une précision à plusieurs centaines de mètres près.
Solution qui consomme peu d’énergie.
Nécessite la permission ACCESS_COARSE_LOCATION
17
Imene Sghaier-Développement Mobile Avancé
18. FOURNISSEURS DE POSITION: PASSIF
Un fournisseur d’emplacement spécial pour avoir des emplacements
générés par d'autres fournisseurs.
Nécessite l'autorisation ACCESS_FINE_LOCATION.
18
Imene Sghaier-Développement Mobile Avancé
19. FOURNISSEURS DE POSITION : LISTE
Pour récupérer les noms de tous les fournisseurs, il suffit de
faire List<String> getAllProviders() (méthode de LocationManager)
Le problème de cette méthode est qu'elle va récupérer tous les
fournisseurs qui existent, même si l'application n'a pas le droit de les
utiliser ou qu'ils sont désactivés par l'utilisateur.
Pour obtenir uniquement la liste des providers disponibles sur
l’appareil, appelez getProviders en utilisant un booléen :
Pour obtenir un provider à partir de son nom, utiliser la méthode:
19
Imene Sghaier-Développement Mobile Avancé
boolean enabledOnly = true;
List providers = lManager.getProviders(enabledOnly);
LocationProvider lManager.getProvider(String name);
20. FOURNISSEURS DE POSITION: CRITÈRE DE CHOIX
Spécifiez les exigences qu’un provider devra respecter et laisserez
Android déterminer la meilleure technologie à utiliser.
Utilisez la classe Criteria pour indiquer ces exigences en termes de
précision (fine ou approximative), de consommation d’énergie
(faible, moyenne, élevée), de coût et de capacité à renvoyer
l’altitude, la vitesse ...
Utiliser getBestProvider ou getProviders pour renvoyer le ou les
mieux adaptés.
20
Imene Sghaier-Développement Mobile Avancé
21. 21
Imene Sghaier-Développement Mobile Avancé
Criteria critere = new Criteria();
// Pour indiquer la précision voulue
// On peut mettre ACCURACY_FINE pour une haute précision ou
//ACCURACY_COARSE pour une moins bonne précision
critere.setAccuracy(Criteria.ACCURACY_FINE);
// Est-ce que le fournisseur doit être capable de donner une altitude ?
critere.setAltitudeRequired(true);
// Est-ce que le fournisseur doit être capable de donner une direction ?
critere.setBearingRequired(true);
// Est-ce que le fournisseur peut être payant ?
critere.setCostAllowed(false);
// Pour indiquer la consommation d'énergie demandée
// Criteria.POWER_HIGH pour une haute consommation,
//Criteria.POWER_MEDIUM pour une consommation moyenne et
//Criteria.POWER_LOW pour une basse consommation
critere.setPowerRequirement(Criteria.POWER_HIGH);
// Est-ce que le fournisseur doit être capable de donner une vitesse ?
critere.setSpeedRequired(true);
22. 22
Introduction
Services de géolocalisation
GPS et Wifi
Permissions de géolocalisation dans le manifest
Les gestionnaires de location
Les fournisseurs de position
Déterminer votre position
Suivre le déplacement
Le géocodage
Le géocodage inverse
OBJECTIFS ET ÉLÉMENTS DE CONTENU
Imene Sghaier-Développement Mobile Avancé
23. DÉTERMINER VOTRE POSITION
Le but des services de géolocalisation est de déterminer la position de
l’appareil.
L’accès à ces services est géré par le service système Location
Manager.
Retrouver la dernière position déterminée par un Location Provider en
utilisant la méthode getLastKnownLocation:
Location loc = lManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
23
Imene Sghaier-Développement Mobile Avancé
25. 25
Introduction
Services de géolocalisation
GPS et Wifi
Permissions de géolocalisation dans le manifest
Les gestionnaires de location
Les fournisseurs de position
Déterminer votre position
Suivre le déplacement
Le géocodage
Le géocodage inverse
OBJECTIFS ET ÉLÉMENTS DE CONTENU
Imene Sghaier-Développement Mobile Avancé
26. SUIVRE LE DÉPLACEMENT
Utilisez pour cela la méthode requestLocationUpdates de
LocationListener.
Les Location Listeners contiennent également des hooks
pour les changements dans le statut du provider ou dans
sa disponibilité.
La méthode requestLocationUpdates accepte un nom
de Location Provider spécifique ou un ensemble de
critères pour déterminer lequel utiliser.
Pour optimiser l’efficacité et réduire le coût et la
consommation d’énergie, vous pouvez également
spécifier le laps de temps et la distance minimale entre
deux mises à jour. 26
Imene Sghaier-Développement Mobile Avancé
27. SUIVRE LE DÉPLACEMENT
Lorsque les laps de temps et la distance minimale seront
dépassés, le Location Listener exécutera l’événement
onLocationChanged
27
Imene Sghaier-Développement Mobile Avancé
28. 28
Introduction
Services de géolocalisation
GPS et Wifi
Permissions de géolocalisation dans le manifest
Les gestionnaires de location
Les fournisseurs de position
Déterminer votre position
Suivre le déplacement
Le géocodage
Le géocodage inverse
OBJECTIFS ET ÉLÉMENTS DE CONTENU
Imene Sghaier-Développement Mobile Avancé
29. LE GÉOCODAGE
Le géocodage est le processus qui permet de convertir des
adresses (comme « 8000, Nabeul , tunisia ») en coordonnées
géographiques (comme latitude 37.423021 et longitude -
122.083739), que vous pouvez ensuite utiliser pour placer des
marqueurs sur une carte, ou pour positionner la carte.
Le géocodage inversé est le processus de conversion de
coordonnées géographiques en adresses lisibles. Le service
de géocodage inversé de Google Maps Geocoding API vous
permet également de retrouver l'adresse correspondant à
un identifiant de lieu donné 29
Imene Sghaier-Développement Mobile Avancé
30. LE GÉOCODAGE
Geocoder geocoder=new Geocoder(this,Locale.getDefault());
Le 2eme paramètre représente une région géographique ou
culturelle, ..
Appeler la méthode getFromLocation qui retourne une liste
d’adresses
List<Address> getFromLocation(double lat, double longi, int maxRes)
Appeler la méthode getFromLocationName qui retourne une liste
de position GPS
List<Address> getFromLocationName(String locaName, int maxRe)
30
Imene Sghaier-Développement Mobile Avancé
31. LE GÉOCODAGE
Obtenir la position GPS la plus probable
31
Imene Sghaier-Développement Mobile Avancé
32. 32
Introduction
Services de géolocalisation
GPS et Wifi
Permissions de géolocalisation dans le manifest
Les gestionnaires de location
Les fournisseurs de position
Déterminer votre position
Suivre le déplacement
Le géocodage
Le géocodage inverse
OBJECTIFS ET ÉLÉMENTS DE CONTENU
Imene Sghaier-Développement Mobile Avancé
33. LE GÉOCODAGE INVERSE
Obtenir les deux adresses les plus probables pour une
position donnée
33
Imene Sghaier-Développement Mobile Avancé