À l’ère numérique d’aujourd’hui, les services de localisation font désormais partie intégrante de nombreuses applications mobiles. Qu’il s’agisse de rechercher des restaurants à proximité, de suivre des activités de remise en forme ou d’activer l’enregistrement sur les réseaux sociaux, l’accès à la position actuelle de l’utilisateur est une exigence courante pour de nombreuses applications Android. Dans cet article de blog, nous explorerons comment obtenir la position actuelle sur Android par programmation en tirant parti de la puissance de la communauté GitHub.
Ce qu’il faut
Pour commencer, vous aurez besoin des éléments suivants :
- Un appareil ou un émulateur Android avec des capacités GPS
- Android Studio installé sur votre machine
- Un compte GitHub
- Connaissance de base du développement Android
Didacticiel vidéo:
Qu’est-ce qui nécessite votre concentration ?
Avant de plonger dans les détails de la mise en œuvre, examinons quelques points clés sur lesquels vous devez vous concentrer lorsque vous travaillez à obtenir la position actuelle sur Android :
- Choisir un fournisseur de localisation approprié en fonction des exigences de votre application
- Demander des autorisations de localisation à l’utilisateur
- Gestion des mises à jour de localisation et des niveaux de précision
- Comprendre les limites et les compromis des différents fournisseurs de localisation
Explorons maintenant différentes options pour obtenir l’emplacement actuel sur Android par programme.
Option 1. Comment obtenir la position actuelle via les services Google Play
L’une des options les plus populaires et les plus fiables pour obtenir la position actuelle sur Android consiste à utiliser l’API de localisation des services Google Play. Cette API fournit un ensemble de classes utilitaires et d’interfaces qui facilitent la récupération de l’emplacement de l’appareil.
Avantages:
- Très précis et fiable
- Ne dépend pas du matériel GPS intégré à l’appareil
- Fournit des fonctionnalités supplémentaires telles que la géolocalisation et la reconnaissance d’activité
Les inconvénients:
- Nécessite une connexion Internet
- Dépend des services Google Play installés sur l’appareil
- Peut ne pas être disponible sur tous les appareils Android
Passons maintenant aux étapes pour récupérer la position actuelle à l’aide des services Google Play.
1. Ajoutez les dépendances nécessaires au fichier build.gradle de votre application :
« `
implémentation ‘com.google.android.gms:play-services-location:20.0.0’
« `
2. Demandez les autorisations nécessaires à l’utilisateur dans votre fichier AndroidManifest.xml :
« `xml
« `
3. Créez une instance client de fournisseur de localisation fusionnée dans votre activité ou fragment :
« `Java
privé FusedLocationProviderClient fusedLocationClient ;
@Passer outre
protected void onCreate (Bundle saveInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
}
« `
4. Demandez des mises à jour de localisation auprès du client du fournisseur de localisation fusionné :
« `Java
privé statique final int REQUEST_CODE_LOCATION_PERMISSION = 1001 ;
demande d’annulation privéeLocationUpdates() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
fusedLocationClient.requestLocationUpdates(createLocationRequest(), locationCallback, null);
} autre {
ActivityCompat.requestPermissions(this, new String(){Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_CODE_LOCATION_PERMISSION);
}
}
« `
5. Gérez le résultat de la demande d’autorisation :
« `Java
@Passer outre
public void onRequestPermissionsResult (int requestCode, autorisations @NonNull String(), @NonNull int() grantResults) {
super.onRequestPermissionsResult(requestCode, autorisations, grantResults);
if (requestCode == REQUEST_CODE_LOCATION_PERMISSION && grantResults.length > 0 && grantResults(0) == PackageManager.PERMISSION_GRANTED) {
requestLocationUpdates();
}
}
« `
6. Implémentez le rappel de localisation pour recevoir des mises à jour de localisation :
« `Java
locationCallback privé locationCallback = new LocationCallback() {
@Passer outre
public void onLocationResult(LocationResult locationResult) {
if (locationResult != null && locationResult.getLastLocation() != null) {
Emplacement emplacement = locationResult.getLastLocation();
// Utiliser les données de localisation
}
}
} ;
« `
Option 2. Comment obtenir l’emplacement actuel via le gestionnaire de localisation Android
Une autre option pour récupérer l’emplacement actuel sur Android consiste à utiliser le gestionnaire de localisation Android. Cette classe donne accès aux services de localisation du système, y compris les fournisseurs de localisation GPS et réseau.
Avantages:
- Fonctionne sans connexion Internet
- Disponible sur tous les appareils Android
- Ne nécessite pas de dépendances supplémentaires
Les inconvénients:
- Peut avoir une précision inférieure à celle de l’API des services Google Play
- S’appuie sur le matériel GPS intégré à l’appareil
- Nécessite davantage de configuration et de gestion manuelles
Voici les étapes pour récupérer l’emplacement actuel à l’aide du gestionnaire de localisation Android :
1. Demandez les autorisations nécessaires à l’utilisateur dans votre fichier AndroidManifest.xml :
« `xml
« `
2. Créez une instance du gestionnaire de localisation Android dans votre activité ou fragment :
« `Java
LocationManager privé locationManager ;
@Passer outre
protected void onCreate (Bundle saveInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
}
« `
3. Définissez un écouteur de localisation pour recevoir les mises à jour de localisation :
« `Java
privé statique final int MIN_TIME_BETWEEN_UPDATES = 5000 ; // 5 secondes
privé statique final int MIN_DISTANCE_CHANGE_FOR_UPDATES = 10 ; // 10 mètres
private LocationListener locationListener = new LocationListener() {
@Passer outre
public void onLocationChanged (emplacement emplacement) {
// Utiliser les données de localisation
}
@Passer outre
public void onStatusChanged (fournisseur de chaînes, statut int, extras du bundle) {
// Gérer les changements de statut
}
@Passer outre
public void onProviderEnabled (fournisseur de chaînes) {
// Fournisseur de handle activé
}
@Passer outre
public void onProviderDisabled (fournisseur de chaînes) {
// Fournisseur de handles désactivé
}
} ;
« `
4. Demandez des mises à jour de localisation auprès du gestionnaire de localisation :
« `Java
privé statique final int REQUEST_CODE_LOCATION_PERMISSION = 1001 ;
demande d’annulation privéeLocationUpdates() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME_BETWEEN_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, locationListener);
} autre {
ActivityCompat.requestPermissions(this, new String(){Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_CODE_LOCATION_PERMISSION);
}
}
« `
5. Gérez le résultat de la demande d’autorisation (similaire à l’option Services Google Play).
Option 3. Comment obtenir l’emplacement actuel via des bibliothèques tierces
Si vous préférez une approche plus abstraite et simplifiée pour récupérer la position actuelle sur Android, vous pouvez vous appuyer sur des bibliothèques tierces qui fournissent une API de niveau supérieur pour les services de localisation. Ces bibliothèques intègrent souvent les API de localisation Android sous-jacentes et offrent des fonctionnalités supplémentaires et une facilité d’utilisation.
Avantages:
- API simple et intuitive
- Code passe-partout réduit
- Abstraction des API Android de bas niveau
Les inconvénients:
- Dépendances supplémentaires et problèmes de compatibilité potentiels
- Peut avoir des limitations ou moins de flexibilité par rapport aux API Android natives
- Pourrait introduire une courbe d’apprentissage si vous utilisez une nouvelle bibliothèque
Il existe plusieurs bibliothèques tierces populaires disponibles pour les services de localisation :
1. API de localisation des services Google Play : La même API dont nous avons parlé dans l’option 1 est également disponible en tant que bibliothèque autonome en dehors des services Google Play. Cela vous permet d’utiliser l’API de localisation des services Google Play sans compter sur l’ensemble du package des services Google Play.
2. Bibliothèque de localisation Android : Il s’agit d’une bibliothèque légère qui fournit une API facile à utiliser pour les services de localisation sur Android. Il simplifie les tâches courantes telles que l’obtention de l’emplacement actuel, le géocodage et le géocodage inversé.
3. SDK Android Mapbox : Si votre application se concentre sur les services de cartographie et de localisation, le SDK Mapbox fournit des fonctionnalités et des outils avancés pour travailler avec des cartes et des services de localisation. Il comprend un ensemble complet d’API pour intégrer des cartes interactives, le géocodage et la navigation dans votre application Android.
Veuillez noter qu’avant d’utiliser une bibliothèque tierce, il est important de consulter la documentation, le support de la communauté et l’état de maintenance de la bibliothèque pour vous assurer qu’elle répond à vos besoins.
Pourquoi ne puis-je pas obtenir la position actuelle sur Android par programmation ?
Si vous rencontrez des difficultés pour obtenir la position actuelle sur Android par programmation, vous pouvez envisager plusieurs solutions alternatives :
1. Vérifiez les autorisations de localisation : Assurez-vous que vous avez demandé les autorisations de localisation nécessaires à l’utilisateur et gérez correctement les rappels d’autorisation.
2. Vérifiez le matériel GPS : Vérifiez que l’appareil ou l’émulateur Android que vous utilisez pour les tests dispose de fonctionnalités matérielles GPS. Certains émulateurs et appareils plus anciens peuvent ne pas avoir de capteur GPS intégré.
3. Vérifiez la connexion Internet : Si vous utilisez un fournisseur de localisation qui nécessite une connexion Internet, assurez-vous que l’appareil est connecté à Internet.
4. Vérifiez les paramètres de l’appareil : Certains appareils Android peuvent avoir des paramètres système ou des restrictions spécifiques qui limitent les services de localisation. Assurez-vous que les services de localisation sont activés et configurés correctement dans les paramètres de l’appareil.
Implications et recommandations
Lorsque vous travaillez avec des services de localisation sur Android, il y a quelques implications et recommandations à garder à l’esprit :
- Les mises à jour de localisation peuvent consommer une énergie importante de la batterie. Optimisez votre stratégie de suivi de localisation en fonction des exigences de votre application pour minimiser l’épuisement de la batterie.
- Pensez à utiliser une combinaison de fournisseurs de localisation pour obtenir la précision et la couverture souhaitées. Par exemple, l’utilisation à la fois du GPS et de fournisseurs basés sur le réseau peut fournir un équilibre entre précision et consommation d’énergie.
- Gérez efficacement les mises à jour de localisation pour éviter une décharge inutile de la batterie. Déterminez la fréquence de mise à jour et le niveau de précision appropriés en fonction des besoins de votre application.
L’essentiel
Obtenir la position actuelle sur Android par programmation est une tâche cruciale pour de nombreuses applications. En tirant parti d’options telles que l’API de localisation des services Google Play, le gestionnaire de localisation Android ou des bibliothèques tierces, les développeurs peuvent facilement intégrer des fonctionnalités basées sur la localisation dans leurs applications Android. Cependant, il est important de considérer les avantages et les inconvénients de chaque option et de comprendre les implications et les meilleures pratiques pour un suivi de localisation efficace.
5 FAQ sur l’obtention de la position actuelle sur Android par programmation
Q1 : Pourquoi devrais-je utiliser l’API de localisation des services Google Play au lieu du gestionnaire de localisation Android ?
R : L’API de localisation des services Google Play offre une expérience de suivi de localisation plus robuste et plus fiable que le gestionnaire de localisation Android. Il fournit des fonctionnalités supplémentaires et ne repose pas uniquement sur le matériel GPS de l’appareil.
Q2 : Puis-je obtenir la position actuelle sur Android sans connexion Internet ?
R : Oui, vous pouvez utiliser le gestionnaire de localisation Android pour récupérer la position actuelle sans connexion Internet. Cependant, la précision peut varier en fonction des fournisseurs de localisation disponibles et des capacités GPS de l’appareil.
Q3 : Existe-t-il des limites à la récupération par programmation de l’emplacement actuel sur Android ?
R : Oui, il y a quelques limitations dont il faut être conscient. La précision de la localisation obtenue dépend de facteurs tels que le matériel de l’appareil, la force du signal et les conditions environnementales. De plus, le suivi de localisation peut consommer une énergie importante de la batterie s’il n’est pas correctement optimisé.
Q4 : Dois-je gérer les autorisations de localisation pour chaque fournisseur de localisation séparément ?
R : Non, vous ne devez demander les autorisations de localisation qu’une seule fois à l’utilisateur. L’autorisation s’applique à tous les fournisseurs de localisation et le système d’autorisation d’Android gère l’accès aux données de localisation.
Q5 : Puis-je utiliser plusieurs fournisseurs de localisation simultanément ?
R : Oui, vous pouvez utiliser plusieurs fournisseurs de localisation pour améliorer la précision et la couverture. La combinaison des fournisseurs de localisation GPS, basés sur le réseau et des services Google Play peut offrir une expérience complète de suivi de localisation.