09.02.2017 Views

creez-des-applications-pour-android

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

6 Exploiter les fonctionnalités d’Android<br />

WiFi à proximité et de la distance mesurée avec les antennes relais du réseau mobile les plus<br />

proches (par triangulation).<br />

Tout d’abord, vous devrez demander la permission dans le Manifest <strong>pour</strong> utiliser les fonctionnalités<br />

de localisation. Si vous voulez utiliser la géolocalisation (par GPS, donc), utilisez<br />

ACCESS_FINE_LOCATION ; <strong>pour</strong> une localisation plus imprécise par WiFi et antennes relais,<br />

utilisez ACCESS_COARSE_LOCATION. Enfin, si vous voulez utiliser les deux types de localisation,<br />

vous pouvez déclarer uniquement ACCESS_FINE_LOCATION, qui comprend toujours<br />

ACCESS_COARSE_LOCATION :<br />

<br />

<br />

Ensuite, on va faire appel à un nouveau service système <strong>pour</strong> accéder à ces fonctionnalités :<br />

LocationManager, que l’on récupère de cette manière :<br />

LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SE<br />

6.3.1.2 Les fournisseurs de position<br />

Vous aurez ensuite besoin d’un fournisseur de position qui sera dans la capacité de déterminer la<br />

position actuelle. On a par un exemple un fournisseur <strong>pour</strong> le GPS et un autre <strong>pour</strong> les antennes<br />

relais. Ces fournisseurs dériveront de la classe abstraite LocationProvider. Il existe plusieurs<br />

métho<strong>des</strong> <strong>pour</strong> récupérer les fournisseurs de position disponibles sur l’appareil. Pour récupérer<br />

le nom de tous les fournisseurs, il suffit de faire List getAllProviders(). Le problème<br />

de cette méthode est qu’elle va récupérer tous les fournisseurs qui existent, même si l’application<br />

n’a pas le droit de les utiliser ou qu’ils sont désactivés par l’utilisateur.<br />

Pour ne récupérer que le nom <strong>des</strong> fournisseurs qui sont réellement utilisables, on utilisera<br />

List getProviders(boolean enabledOnly). Enfin, on peut obtenir un<br />

LocationProvider à partir de son nom avec LocationProvider getProvider(String<br />

name) :<br />

ArrayList providers = new ArrayList();<br />

ArrayList names = locationManager.getProviders(true);<br />

for(String name : names)<br />

providers.add(locationManager.getProvider(name));<br />

[[information]] | Les noms <strong>des</strong> fournisseurs sont contenus dans <strong>des</strong> constantes, comme<br />

LocationManager.GPS_PROVIDER <strong>pour</strong> le GPS et LocationManager.NETWORK_PROVIDER<br />

<strong>pour</strong> la triangulation.<br />

Cependant, il se peut que vous ayez à sélectionner un fournisseur en fonction de critères bien<br />

précis. Pour cela, il vous faudra créer un objet de type Criteria. Par exemple, <strong>pour</strong> configurer<br />

tous les critères, on fera :<br />

Criteria critere = new Criteria();<br />

// Pour indiquer la précision voulue<br />

// On peut mettre ACCURACY_FINE <strong>pour</strong> une haute précision ou ACCURACY_COARSE <strong>pour</strong> une mo<br />

critere.setAccuracy(Criteria.ACCURACY_FINE);<br />

406

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!