Skip to content

ysimonx/GeolocatorPrecise

Repository files navigation

Geolocator Precise

Une application Flutter démontrant l'utilisation précise de la géolocalisation GPS avec suivi en temps réel.

Flutter Dart License

Fonctionnalités

  • Suivi GPS en temps réel avec haute précision
  • Support Android et iOS
  • Affichage de la position actuelle (latitude, longitude, altitude)
  • Informations de précision, vitesse et cap
  • Historique des positions
  • Notification de service au premier plan (Android)
  • Support du tracking en arrière-plan
  • Interface utilisateur intuitive

Captures d'écran

L'application affiche :

  • Le statut du tracking GPS
  • La position actuelle avec tous les détails
  • Un historique des mises à jour de position
  • Des boutons de contrôle pour démarrer/arrêter le tracking

Prérequis

  • Flutter SDK 3.0 ou supérieur
  • Dart SDK 3.0 ou supérieur
  • Un appareil physique ou émulateur avec GPS

Installation

  1. Clonez ce dépôt :
git clone https://github.com/votre-username/geolocator_precise.git
cd geolocator_precise
  1. Installez les dépendances :
flutter pub get
  1. Lancez l'application :
flutter run

Configuration

Android

Les permissions nécessaires sont déjà configurées dans android/app/src/main/AndroidManifest.xml :

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>

Note : Pour Android 10 (API 29) et supérieur, la permission ACCESS_BACKGROUND_LOCATION doit être demandée séparément si vous souhaitez accéder à la localisation en arrière-plan.

iOS

Les permissions nécessaires sont déjà configurées dans ios/Runner/Info.plist :

<key>NSLocationWhenInUseUsageDescription</key>
<string>Cette application a besoin d'accéder à votre position pour afficher votre localisation en temps réel.</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>Cette application a besoin d'accéder à votre position en arrière-plan pour continuer le suivi de votre localisation.</string>

Architecture

Le projet est organisé de la manière suivante :

lib/
├── main.dart                           # Point d'entrée et interface utilisateur
├── services/
│   └── geolocator_service.dart        # Service de géolocalisation
└── utils/
    └── logger.dart                    # Utilitaire de logging

GeolocationService

Le service principal qui gère toute la logique de géolocalisation :

  • requestPermissions() : Demande les permissions de localisation
  • startTracking() : Démarre le suivi GPS en temps réel
  • getCurrentPosition() : Obtient la position actuelle
  • stopTracking() : Arrête le suivi GPS
  • dispose() : Nettoie les ressources

Utilisation

final geoService = GeolocationService(
  onPositionChanged: (Position? position) {
    // Appelé à chaque mise à jour de position
    print('Nouvelle position: ${position?.latitude}, ${position?.longitude}');
  },
  onMessage: (String? msg) {
    // Appelé pour les messages d'erreur ou d'information
    print('Message: $msg');
  },
);

// Démarrer le tracking
await geoService.startTracking();

// Arrêter le tracking
geoService.stopTracking();

// Nettoyer les ressources
geoService.dispose();

Configuration GPS

Android

Les paramètres sont optimisés pour une précision maximale :

  • accuracy: LocationAccuracy.best
  • distanceFilter: 0 mètre (mise à jour le plus souvent possible)
  • intervalDuration: 5 secondes
  • Service au premier plan activé avec notification

iOS

Les paramètres sont optimisés pour le suivi continu :

  • accuracy: LocationAccuracy.best
  • activityType: ActivityType.fitness
  • distanceFilter: 0 (toutes les mises à jour)
  • Support du tracking en arrière-plan activé

Dépendances principales

Développement

Pour contribuer au projet :

  1. Forkez le dépôt
  2. Créez une branche pour votre fonctionnalité (git checkout -b feature/AmazingFeature)
  3. Committez vos changements (git commit -m 'Add some AmazingFeature')
  4. Poussez vers la branche (git push origin feature/AmazingFeature)
  5. Ouvrez une Pull Request

Tests

Pour tester l'application, il est recommandé d'utiliser un appareil physique car les émulateurs peuvent avoir des limitations GPS.

Sur émulateur :

Android : Utilisez les commandes de localisation de l'émulateur Android iOS : Utilisez Debug > Location dans le simulateur iOS

Dépannage

Les permissions ne sont pas demandées

Assurez-vous que les fichiers de configuration (AndroidManifest.xml et Info.plist) sont correctement configurés.

La position n'est pas mise à jour

  • Vérifiez que le GPS est activé sur l'appareil
  • Assurez-vous d'être à l'extérieur ou près d'une fenêtre pour une meilleure réception
  • Vérifiez les logs pour identifier les erreurs

Erreur "Permission denied"

L'utilisateur a refusé les permissions. Vous devrez les demander à nouveau ou guider l'utilisateur vers les paramètres de l'application.

Licence

Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.

Auteur

Créé avec le package geolocator

Remerciements

  • L'équipe Flutter
  • L'équipe du package geolocator
  • La communauté Flutter

Ressources

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published