sequence_navigation.puml 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. @startuml sequence
  2. skinparam defaultFontSize 13
  3. skinparam sequenceFontSize 13
  4. title Diagramme de séquence — Détection automatique d'une navigation OsmAnd
  5. actor "Utilisateur\nOsmAnd+" as user
  6. entity "OsmAnd+\n(téléphone)" as osmand
  7. entity "System\nrelais notif" as sys
  8. entity "OsmAndNotificationListener\n(montre)" as listener
  9. entity "OsmAndNotificationParser" as parser
  10. entity "NavigationStateRepository" as repo
  11. entity "NavigationViewModel" as vm
  12. entity "UI\nNavigationScreen" as ui
  13. == Démarrage navigation ==
  14. user -> osmand : Démarrer la navigation (Osmand+ 5.4.9)
  15. osmand -> sys : Publie notification « Navigation » (catégorie navigation)
  16. sys -> listener : onNotificationPosted(sbn)
  17. listener -> parser : parse(payload texte)
  18. parser --> listener : NavigationState(isActive=true, instruction, métriques)
  19. listener -> repo : onOsmAndNotification(key, parsed)
  20. repo -> vm : _state se met à jour (StateFlow)
  21. vm -> ui : collectAsStateWithLifecycle -> affiche flèche, distances, ETA, vitesse
  22. ui -> ui : FLAG_KEEP_SCREEN_ON activé
  23. == Pause navigation ==
  24. osmand -> sys : Notification « Navigation en pause »
  25. sys -> listener : onNotificationPosted(sbn)
  26. listener -> parser : parse -> isPaused = true
  27. parser --> listener : NavigationState(isActive=true, isPaused=true)
  28. listener -> repo : onOsmAndNotification(key, parsed)
  29. vm -> ui : rafraîchit (message « Navigation en pause », temps maintenu)
  30. == Fin navigation ==
  31. osmand -> sys : Retire la notification de navigation
  32. sys -> listener : onNotificationRemoved(sbn)
  33. listener -> repo : onOsmAndNotificationRemoved(key)
  34. repo -> vm : _state = NavigationState.IDLE
  35. vm -> ui : attend 4s, alors repasse à HomeScreen (swipe-dismiss)
  36. ui -> ui : FLAG_KEEP_SCREEN_ON retiré
  37. @enduml