Tachymètre   
  Un exercice à l'apprentissage d'Android  

Le Tachymètre
 

 

- La version 1 révision 0 de ce "Tachymètre" -

--ooOoo--

 

 En dehors du problème de précision qu'il s'agira de tenter d'améliorer par la suite, l'inconvénient majeur de la version d'essai est l'impossibilité d'interrompre l'application sur certains évènements extérieurs. Il est donc maintenant question de trouver une solution pour palier à ce problème grâce à l'utilisation de la classe "service" pour lancer une activité d'arrière-plan.

Bs 402

 Je vais donc m'attacher à ce problème d'interruptibilité en toute priorité : on doit pouvoir, en particulier, téléphoner avec un tachymètre GPS toujours actif.

Caractéristiques de l'application "Tachymètre" :

Cette application se réduit à deux composants :

1. - une activité de gestion et d'affichage des informations collectées par le GPS,
2. - une activité de collecte des points géolocalisés par le GPS.

L'activité (2) doit donc tourner en permanence tant qu'elle n'est pas arrêtée. Travaillant en arrière-plan, elle ne peut pas avoir accès à l'écran d'affichage et Android ne sera jamais amené à la tuer ou à l'interrompre sauf erreur majeure.

L'application (1), l'activité-mère, gère l'affichage et l'ordonnancement de l'application. Elle pourra être arrêtée à loisir à condition qu'aucun synchronisme ne la lie à l'activité (2).

À cela, 2 impératifs :

1. - à son premier lancement, l'activité (1) doit pouvoir lancer elle-même l'activité (2) sitôt les paramètres de configurations initialisés,
2. - les deux activités fonctionnant de manière asynchrone doivent pouvoir communiquer entre elles. En particulier, l'activité (1) doit pouvoir passer des paramètres de configuration, mais aussi doit pouvoir consulter les indications de l'activité (2) à afficher pour l'utilisateur,
 
A - L'activité (1) de gestion et d'affichage (nom de l'activité "TachyMetre") : Source ICI

L'écran d'affichage de l'application vue de l'utilisateur se présente comme suit :

Ecran du tachymètre

La principale fonction d'un tachymètre est de fournir la vitesse instantanée durant un déplacement sur un parcours.

La présente application se propose de fournir, à partir d'une capture GPS, un certain nombre d'informations supplémentaires. Les principales sont  :
 

la vitesse moyenne,
la vitesse maximale,
la durée du parcours.

Les vitesses sont exprimées en kilomètres par heure.
Les distances sont exprimées en kilomètres.
La durée du parcours est exprimée en heures, minutes et secondes.

L'affichage des trois vitesses est assurée de manière numérique et avec des aiguilles plus faciles à lire.

Cependant, un parcours peut être interrompu plus ou moins longtemps pour de diverses raisons comme, par exemple, le temps d'un repas, un arrêt imprévu, etc... L'application prend donc en compte des tronçons successifs de parcours.

Le temps d'un tronçon étant non négligeable, le téléphone ne peut en aucune façon être bloqué par l'application «  Tachymètre  ». Celle_ci prend donc en compte des interruptions d'affichage sans interrompre la capture du parcours pour, par exemple, téléphoner, consulter un annuaire, exécuter une autre application ou tout simplement éteindre l'affichage de l'écran pour économiser la batterie.

D'autres informations moins importantes, mais utiles éventuellement, sont affichées  :
 

l'heure de départ,
l'heure courante,
la longitude courante,
la latitude courante,
l'altitude courante,
la durée courante du parcours.
la précision des mesures. Un GPS public courant donne des points de géolocalisation à 3, 4 mètres près. On considère qu'au delà de 5 mètres, la géolocalisation est erronée. Elle est alors ignorée.
le numéro de séquence du tronçon courant,
le nombre courant de points de géolocalisation.
l'échelle de graduation du cadran en fonction du domaine d'utilisation  matérialisé par l'affichage de l'un des logos ci-dessous :
à pieds
à pieds,
en voilier
en bateau
en voiture
en voiture
en avion
en avion
la période qui sépare deux points de géolocalisation en fonction du domaine d'utilisation.

Enfin, la trajectoire est sauvegardée dans un fichier sur carte mémoire. Si cette dernière n'est pas montée, la sauvegarde est effectuée en mémoire interne.

Le parcours est sauvegardé au format «  kml  ». Il est donc directement affichable sous Google Earth version téléphone ou PC.

L'écran d'affichage se compose des éléments suivants :

1° - Les boutons :

Ils permettent de contrôler l'application. Ils sont de forme carrée, blancs quand ils sont actifs, gris quand ils ne le sont pas :

  le bouton « Départ » : il permet de démarrer une géolocalisation. L'heure de départ du parcours est repérée et affichée. Pour capturer le premier point, le GPS commence par lancer une procédure de recherche d'au moins quatre satellites ce qui prend quelques dizaines de secondes.
  le bouton « Arrêt » : il permet de terminer la capture d'un parcours. Le ficher «  kml  » de la trajectoire est alors exploitable sous Google Earth.
  le bouton « Sortie » : il permet de terminer l'application.
  le bouton « Pause » : il permet de suspendre la capture du parcours en terminant le tronçon courant. Les paramètres de l'application sont préservés pour une reprise de la géolocalisation.
  le bouton « Reprise » : il permet de reprendre la géolocalisation suspendu et démarre un nouveau tronçon de trajectoire. Comme pour le bouton «  Départ  », le GPS lance une procédure de recherche de satellites avant de capturer le premier point.
  le bouton « Aide » : il permet de lancer une petite aide interactive. Ce bouton est actif tout le temps sauf quand l'aide est démarrée. Il suffit de toucher une information sur l'écran pour afficher en surcharge un texte sommaire explicatif dans un cadre.
  le bouton « Fin » : il permet de mettre fin à l'aide préalablement ouverte par le bouton «  Aide  ».

2° - L'échelle de graduation  :

Elle permet de choisir le domaine d'utilisation du tachymètre en touchant les zones suivantes  :

  la zone « 0-20 km/h »  correspond au domaine pédestre. La capture des points s'effectue toutes les 2 secondes.

  la zone « 20-40 km/h »  correspond au domaine nautique. La capture des points s'effectue toutes les 3 secondes.
  la zone « 40-110 km/h »  correspond au domaine automobile. La capture des points s'effectue toutes les 4 secondes.
  la zone « au dessus de 110 km/h »  correspond au domaine aéronautique. La capture des points s'effectue toutes les 5 secondes.

3° - Les informations principales   :

Elles sont affichées sous forme numérique et avec des aiguilles :

  la « vitesse instantanée »  est mise à jour à chaque branche (à chaque point sauf le premier).
     Pour éviter une activité trop importante du processeur provoquant une décharge plus rapide de la batterie, il n'est pas procédé à un déplacement progressif des aiguilles plus esthétque. Leur changement de position est donc brutal. Cela se ressent surtout dans le domaine pédestre où la non compensation des erreurs de précision peut engendrer des écarts de vitesse importants.
  la « vitesse maximale »  est mise à jour au même rythme que celui de la vitesse instantanée.
  la « vitesse moyenne »  est le rapport de distance parcourue et de la somme des temps des différents tronçons entiers et du dernier tronçon partiel.
  la « durée du parcours »  est la somme des longueurs des différents tronçons entiers et de celle du dernier tronçon partiel.

Si une vitesse est supérieure à la graduation maximale affichée, son aiguille est fixée sur la graduation maximale mais les informations numériques restent valables.

4° - Les informations accessoires   :

Elles parlent d'elles-mêmes.

À noter cependant que l'altitude n'est prise en compte que dans le domaine aéronautique, en planeur par exemple, pour visualiser les variations de hauteur dans les spirales en ascendances et les transits.

Dans les autres domaines, elle est à zéro mais le fichier est paramétré pour rester au niveau du sol de lieu.

5° - Exemple d'affichage sous Google Earth  :

exemples kml

À remarquer, dans un trajet pédestre, les variations de trajectoire dues à l'imprécision des mesure à 3, 4 mètres près amplifiée par des difficultés d'accessibilité aux satellites à cause des immeubles de la ville. Il n'y a cependant pas d'ambiguité sur le trajet.

B - L'activité (2) de collecte des géolocalisations (nom de l'activité "TachyGPS") : Source ICI

Cette activité a pour fonction la capture des points de géolocalisation et la transmission dans un conteneur, les "Shared Preferences", des informations à afficher dans l'activité principale (1). Sa durée de vie est celle d'un tronçon de trajectoire délimité par un toucher du bouton "Pause" et celui d'un bouton "Reprise". Elle fonctionne en arrière-plan grâce à la classe "Service". L'activité est donc déclarée

public class TachyGPS extends Service

Le package "android.location" permet d'acquérir les informations du GPS. À ce niveau de développement, seules la longitude, la latitude, l'altitude et la précision sont acquises.

J'ai essayé dans le source d'atténuer les variations de la vitesse en faisant une moyenne de proche en proche des vitesses instantanées de plusieurs points (de 1 jusqu'à 5 points). Les résultats n'ont pas été concluants pour le domaine pédestre.

B - Conclusions sur l'application "Tachymètre" :    

Informatiquement, au fur et à mesure de l'avancement dans l'apprentissage, l'application ne pause aucun problème majeur. Son fonctionnement est tout à fait correct.

1° - Les plus  :

• elle peut être arrêtée à convenance par l'utilisateur sans perturber le déroulement de la capture des points de géolocalisation. Il lui est alors possible d'exécuter d'autres applications,
• elle peut être arrêtée par le système en particulier, pour économiser la batterie.
• elle sauvegarde la trajectoire du parcours dans un fichier au format "kml" de Google. Cette trajectoire peut donc être affichée sous Google Earth sur PC ou sur le téléphone. Chaque tronçon est visualisé dans une couleur différente.
• elle permet le choix entre 4 domaines d'utilisation correspondant à 4 rythmes différents de prise de mesure. Il est cependant possible  d'utiliser n'importe quel domaine indifféremment quelque soit le domaine emprunté.

1° - Les moins  :

• elle n'accepte qu'un affichage en mode paysage,
• elle donne des résultats plus que discutables dans le domaine pédestre, un peu moins dans le domaine nautique et à peu près corrects dans les domaines automobile et aéronautique. Il faudra donc faire des tests en utilisant la vitesse fournie par le système de géolocalisation.
• l'affichage graphique des cadrans n'est pas optimisé, les aiguilles bougent de manière saccadée. C'est surtout un exercice de programmation car l'utilité est limitée.
• l'affichage est surchargé.
• elle n'affiche pas le nombre de satellites maximum de la constellation et le nombre de satellites utilisés. Cette information donne une indication sur la crédibilité des informations.
C - Installation de l'application "Tachymètre" sur le téléphone Android :    

La rubrique "Téléchargement/Installation" donne la marche à suivre pour l'installation de la dernière version de l'application.

 

--ooOoo--