Aller au contenu

Localisation Actuelle

Résumé

  • Nom interne : GetCurrentLocation
  • Catégorie : Localisation
  • Objectif : Récupérer la position GPS actuelle de l'appareil (latitude, longitude, précision) avec gestion configurable du timeout.
  • Type de tâche : Normale

Compatibilité

  • Version minimale AndroMate : 1.1.0

  • Version maximale AndroMate : 1.1.0

  • Android minimum : Android 13 (API 33)

  • Android maximum testé : Android 16 (API 36)

  • Constructeurs supportés :

    • ✅ Tous les constructeurs (testé sur Samsung One UI 6.x / 7.x / 8.x et Google Pixel Android Stock)
  • Permissions requises :

    • ACCESS_FINE_LOCATION
    • ACCESS_COARSE_LOCATION
    • Les services de localisation doivent être activés sur l'appareil

Description détaillée

La tâche GetCurrentLocation interroge le système GPS du téléphone afin d'obtenir la position géographique actuelle.

Elle est utilisée pour :

  • Collecter la géolocalisation de l'appareil (latitude / longitude)
  • Mesurer la précision GPS
  • Attacher les données de localisation à des rapports de télémétrie ou de supervision
  • Déclencher des actions selon la position géographique
  • Suivre le déplacement ou la présence dans une zone définie

La tâche gère :

  • la vérification que les services de localisation sont activés,
  • la vérification des permissions de localisation,
  • la demande de position GPS via FusedLocationProviderClient,
  • la gestion d'un délai d'attente configurable (location_timeout_ms),
  • la récupération des valeurs latitude, longitude et précision (arrondies à 3 décimales).

Paramètres d'entrée

Paramètre Type Obligatoire Valeurs possibles Compatibilité Android Compatibilité AndroMate Défaut
location_timeout_ms Integer Non Temps en millisecondes Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 10000

Paramètres de sortie

Champ Type Condition de déclenchement Compatibilité Android Compatibilité AndroMate Défaut
location_lat_output Double Lorsque la localisation est réussie Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 <ANDROMATE_NULL_VALUE>
location_long_output Double Lorsque la localisation est réussie Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 <ANDROMATE_NULL_VALUE>
location_accuracy_output Float Lorsque la localisation est réussie Android 13 (API 33) → Android 16 (API 36) 1.1.0 → 1.1.0 <ANDROMATE_NULL_VALUE>

Exceptions

Code Description
GPS-ERROR-001 Échec de l'obtention de la position GPS dans le délai spécifié (location_timeout_ms).
GPS-ERROR-002 Impossible d'obtenir la position — le fournisseur GPS a retourné une position nulle.
GPS-ERROR-003 Les services de localisation sont désactivés sur l'appareil. Activez le GPS dans les paramètres.
GPS-ERROR-004 L'application ne dispose pas de la permission ACCESS_FINE_LOCATION ou ACCESS_COARSE_LOCATION.

Diagramme d'exécution

flowchart TD
    Start([▶ GetCurrentLocation]) --> CheckGps{Services de\nlocalisation activés ?}
    CheckGps -->|Non| E3[❌ GPS-ERROR-003\nLocalisation désactivée]
    CheckGps -->|Oui| CheckPerm{ACCESS_FINE_LOCATION\naccordée ?}

    CheckPerm -->|Non| E4[❌ GPS-ERROR-004\nPas de permission]
    CheckPerm -->|Oui| GetLoc[📍 getCurrentLocation\nPriorité : HAUTE_PRÉCISION\nTimeout : location_timeout_ms]

    GetLoc -->|Timeout| E1[❌ GPS-ERROR-001\nTimeout GPS]
    GetLoc -->|Succès| CheckNull{Location\n== null ?}

    CheckNull -->|Oui| E2[❌ GPS-ERROR-002\nPosition nulle]
    CheckNull -->|Non| ExtractData[📊 Extraire\nlocation_lat_output\nlocation_long_output\nlocation_accuracy_output]

    ExtractData --> Success([✅ LocationTaskResult])

    E1 --> Error([❌ Exception])
    E2 --> Error
    E3 --> Error
    E4 --> Error

    style Start fill:#e3f2fd
    style Success fill:#c8e6c9
    style Error fill:#ffcdd2
    style ExtractData fill:#fff9c4
    style GetLoc fill:#f3e5f5
    style E1 fill:#ffcdd2
    style E2 fill:#ffcdd2
    style E3 fill:#ffcdd2
    style E4 fill:#ffcdd2

Comment ça fonctionne :

  1. Vérifier les services de localisation : Lance GPS-ERROR-003 si le GPS est désactivé
  2. Vérification des permissions : Lance GPS-ERROR-004 si ACCESS_FINE_LOCATION n'est pas accordée
  3. Demande GPS : Obtient la position actuelle via FusedLocationProviderClient
  4. Attente avec timeout : Lance GPS-ERROR-001 si le GPS ne répond pas dans location_timeout_ms
  5. Vérification null : Lance GPS-ERROR-002 si le fournisseur GPS retourne une position nulle
  6. Extraction des données : Récupère latitude → location_lat_output, longitude → location_long_output, précision → location_accuracy_output
  7. Résultat : Retourne LocationTaskResult en cas de succès

Détails des paramètres d'entrée

1. Paramètre d'entrée : location_timeout_ms

Temps maximal (en millisecondes) d'attente pour un fix GPS valide avant de lancer GPS-ERROR-001.

Exemple

"location_timeout_ms": 15000
  • Défaut : 10000 ms
  • Valeurs recommandées : 5000–30000 ms

Détails des paramètres de sortie

2. Variable résultat : location_lat_output

Stocke la valeur de latitude retournée par le fournisseur GPS.

Exemple

"location_lat_output": "$LATITUDE"

3. Variable résultat : location_long_output

Stocke la valeur de longitude retournée par le fournisseur GPS.

Exemple

"location_long_output": "$LONGITUDE"

4. Variable résultat : location_accuracy_output

Stocke la précision du fix GPS en mètres (arrondie à 3 décimales).

Exemple

"location_accuracy_output": "$ACCURACY"
  • Plus la valeur est faible, meilleure est la précision.

Exemple JSON complet

{
  "GetCurrentLocation": [
    {
      "id": "-1",
      "title": "Localisation Actuelle",
      "location_timeout_ms": 15000,
      "location_lat_output": "$LATITUDE",
      "location_long_output": "$LONGITUDE",
      "location_accuracy_output": "$ACCURACY"
    }
  ]
}