Localisation
M. LACHGAR
III. Quelques APIs du système Android
Localisation
Localiser l’appareil :
❑ Permission :
Tout d'abord, il faut demander la permission dans le Manifest pour utiliser les
fonctionnalités de localisation.
❖ Pour utilisation du GPS, il faut inclure la permission suivante
<uses-permission android:name="[Link].ACCESS_FINE_LOCATION" />
❖ Pour une localisation plus imprécise par WiFi et antennes relais :
<uses-permission android:name="[Link].ACCESS_COARSE_LOCATION" />
Ensuite, on va faire appel à un nouveau service système pour accéder à ces
fonctionnalités : LocationManager, que l'on récupère de cette manière :
LocationManager locationManager =
(LocationManager)getSystemService(Context.LOCATION_SERVICE);
III. Quelques APIs du système Android
Localisation
Localiser l’appareil :
❑ Obtenir des notifications du fournisseur :
Pour obtenir la dernière position connue de l'appareil, utilisez Location
getLastKnownLocation(String provider).
Si on veut faire en sorte que le fournisseur se mette à jour automatiquement à une
certaine période ou tous les x mètres, on peut utiliser la méthode suivante :
[Link](LocationManager.GPS_PROVIDER, 60000, 150, new LocationListener() {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onLocationChanged(Location location) {
Log.d("GPS", "Latitude " + [Link]() + " et longitude " + [Link]());
}
});
III. Quelques APIs du système Android
Localisation
Localiser l’appareil :
Cette méthode possède 4 arguments :
▪ Le provider utiliser pour recevoir les mises à jour des coordonnées utilisateurs (GPS / NETWORK …)
▪ Un interval minimum entre deux notifications (en millisecondes)
▪ Un interval minimum entre deux notifications (en mètre)
▪ L’instance de votre LocationListener
▪ OnProviderEnabled(String provider) : Cette méthode est appelée quand une source de localisation est
activée (GPS, 3G..etc).
String msg = [Link](getResources().getString([Link].provider_enabled), provider);
[Link](getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
<string name="provider_enabled">The provider %s is now enabled</string>
▪ OnProviderDisabled(String provider) : Cette méthode est appelée quand une source de localisation est
désactivée(GPS, 3G..etc). L’argument est le nom de la source désactivée.
String msg = [Link](getResources().getString([Link].provider_enabled), provider);
[Link](getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
<string name="provider_disabled">The provider %s is now disabled</string>
III. Quelques APIs du système Android
Localisation
Localiser l’appareil :
▪ OnStatusChanged(String provider, int status, Bundle extras) : Appeler quand le status d’une source change. Il
existe 3 statuts (OUT_OF_SERVICE, TEMPORARILY_UNAVAILABLE, AVAILABLE).
String newStatus = "";
switch (status) {
case LocationProvider.OUT_OF_SERVICE:
newStatus = "OUT_OF_SERVICE";
break;
case LocationProvider.TEMPORARILY_UNAVAILABLE:
newStatus = "TEMPORARILY_UNAVAILABLE";
break;
case [Link]:
newStatus = "AVAILABLE";
break;
}
String msg = [Link](getResources().getString([Link].provider_new_status), provider, newStatus);
[Link](getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
<string name="provider_new_status">The provider %1$s has now a new status %2$s</string>
• OnLocationChanged(Location location) : Cette méthode est appelée quand la localisation de l’utilisateur est mise à jour. L’argument
représente la nouvelle position. Vous pouvez récupérer plusieurs informations comme la latitude, longitude, altitude et précision
(en mètre).
latitude = [Link]();
longitude = [Link]();
altitude = [Link]();
accuracy = [Link](); <string name="new_location">New Location : Latitude = %1$s, Longitude
= %2$s, Altitude = %3$s avec une précision de %4$s mètres </string>
String msg = [Link](
getResources().getString([Link].new_location), latitude,
longitude, altitude, accuracy);
[Link](getApplicationContext(), msg, Toast.LENGTH_LONG).show();
III. Quelques APIs du système Android
Localisation
Afficher des cartes :
❑ Les éléments de l’API :
✓ La fonction MapFragment qui vient de
faciliter l’affichage d’une carte sur toutes
les tailles d’écrans des appareils Android.
✓ Les données vectorisées qui offrent deux
avantages : un chargement et un
téléchargement plus rapides.
✓ De nouvelles vues 3D, indoor, trafic, est qui
offrent un affichage de la vue en 3D
(légèrement inclinée).
✓ Des marqueurs beaucoup plus simples à
créer.
✓ Un cache amélioré et beaucoup d’autres
fonctions.
III. Quelques APIs du système Android
Localisation
Afficher des cartes :
❑ Marker :
public void onLocationChanged(Location location) {
latitude = [Link]();
longitude = [Link]();
altitude = [Link]();
accuracy = [Link]();
String msg = [Link](
getResources().getString([Link].new_location), latitude,
longitude, altitude, accuracy);
[Link](new MarkerOptions().position(new LatLng(latitude, longitude)).title("Marker")
.icon([Link]([Link].ic_launcher)));
[Link](getApplicationContext(), msg, Toast.LENGTH_LONG).show();
}
.snippet("Population: 4,137,400")
❑ Type :
if (mMap != null) {
[Link](GoogleMap.MAP_TYPE_HYBRID);
setUpMap();
}
[Link](new [Link]() {
@Override
public boolean onMarkerClick(Marker marker) {
[Link](getApplicationContext(), [Link](),
Toast.LENGTH_SHORT).show();
return false;
}
});
III. Quelques APIs du système Android
Localisation
Afficher des cartes :
❑ PolyLine:
PolylineOptions rectOptions = new PolylineOptions()
.add(new LatLng(31.6341600, -7.9999400))
.add(new LatLng(34.0132500, -6.8325500));
[Link](rectOptions);
❑ Polygons :
[Link](new PolygonOptions()
.add( new LatLng(31.6341600, -7.9999400), new LatLng(34.0132500, -6.8325500), new
LatLng(34.0371500, -4.9998000)).fillColor([Link]));
❑ Cercle :
CircleOptions circleOptions = new CircleOptions()
.center(new LatLng(31.6341600, -7.9999400))
.radius(100); // en mètre
[Link](circleOptions);
III. Quelques APIs du système Android
Localisation
Désactiver le service de location
il est conseillé de s’abonner aux mises à jour des coordonnées de l’utilisateur dans la
méthode onResume et de se désabonner dans le méthode onStop afin de stopper
l’utilisateur des ressources de localisation alors que l’application n’en a plus l’utilité.
@Override
protected void onResume() {
[Link]();
lm = (LocationManager) [Link](LOCATION_SERVICE);
if ([Link](LocationManager.GPS_PROVIDER))
[Link](LocationManager.GPS_PROVIDER, 10000, 0, this);
[Link](LocationManager.NETWORK_PROVIDER, 10000, 0, this);
}
@Override
protected void onPause() {
[Link]();
[Link](this);
}