Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
Chapitre 33
Accès aux services de localisation 323
Si vous choisissez la première approche, un appel à la méthode getProviders() du
LocationManager vous donnera une liste de fournisseurs que vous pouvez présenter à
l’utilisateur pour qu’il fasse son choix.
Vous pouvez également créer et initialiser un objet Criteria, en précisant ce que vous
attendez d’un LocationProvider. Par exemple :
● setAltitudeRequired() pour indiquer si vous avez besoin ou non de connaître votre
altitude ;
● setAccuracy() pour fixer un niveau de précision minimal de la position, en mètres ;
● setCostAllowed() pour indiquer si le fournisseur doit être gratuit ou non (c’est-à-dire
s’il peut impliquer un paiement de la part de l’utilisateur du terminal).
Lorsque l’objet Criteria a été rempli, appelez la méthode getBestProvider() de votre
LocationManager et Android passera les critères en revue pour vous donner la meilleure
réponse. Tous ces critères peuvent ne pas être vérifiés – à part celui concernant le prix, ils
peuvent tous être ignorés si rien ne correspond.
Pour effectuer des tests, vous pouvez également indiquer directement dans votre code le
nom d’un LocationProvider (gps, par exemple).
Lorsque vous connaissez le nom du LocationProvider, vous pouvez appeler getLastKnownPosition() pour trouver votre dernière position. Notez, cependant, que cette
"dernière position" peut être obsolète (si, par exemple, le téléphone était éteint) ou valoir
null si aucune position n’a encore été enregistrée pour ce fournisseur. En revanche,
getLastKnownPosition() est gratuite et ne consomme pas de ressource car le fournisseur
n’a pas besoin d’être activé pour connaître cette valeur.
Ces méthodes renvoient un objet Location qui vous indiquera la latitude et la longitude
du terminal en degrés – des valeurs double de Java. Si le fournisseur donne d’autres informations, vous pouvez les récupérer à l’aide des méthodes suivantes :
● hasAltitude() indique s’il y a une valeur pour l’altitude et getAltitude() renvoie
l’altitude en mètres.
● hasBearing() indique s’il y a une information d’orientation (une valeur de compas) et
getBearing() renvoie cette valeur en degrés par rapport au vrai nord.
● hasSpeed() indique si la vitesse est connue et getSpeed() la renvoie en mètres par
seconde.
Ceci dit, une approche plus fréquente pour obtenir l’objet Location à partir d’un LocationProvider consiste à s’enregistrer pour les modifications de la position du terminal,
comme expliqué dans la section suivante.
Livre Android.book Page 323 Dimanche, 8. novembre 2009 12:23 12
Précédent

- 338/391

Suivant