- Année universitaire 2019-2020 -
- Devoir à rendre NFA025 -
Conservatoire National des Arts et Métiers

mercredi 17 juin 2020

Ce devoir à rendre sur la plateforme Moodle pour le vendredi 10 juillet 2020, va compter pour votre évaluation de l'UE NFA025. Ce travail doit être personnel. Le travaille sera remis sous la forme d'un fichier texte (pas de format binaire type Word ou autre), éventuellement avec des enrichissement Mardown si vous le souhaitez.

Partie 1 : Les composants applicatifs Android (11pt)

Un développeur Android doit réaliser une application dédiée à faciliter le déroulement de parties de jeu de société. Cette application doit permettre de récolter les inscriptions de participants. Par contre le système veut ne pas être tributaire des échanges réseaux et donc permettra l'échange d'information par QRcode.
Comme d'habitude, nous nous intéressons ici qu'à une version très embryonnaire de cette application, disposant essentiellement d'une activité principale, lancée au démarrage de l'application implantée par la classe Bienvenue, qui constitue le point d'entrée de l'application et propose à l'utilisateur plusieurs possibilités. À partir de ce point d'entrée principal, l'utilisateur peut :

Question 1
À partir des informations dont vous disposez à ce moment, donner le contenu de fichier AndroidManifest.xml
Question 2
Le développeur veut vérifier le comportement des cycles de vie des différentes activités de l'application. Il va donc créer le squelette de chacune de ces activités en implantant chaque méthode (on considère essentiellement les 9 méthodes vues en cours pour les activités) du cycle de vie pour ajouter une trace dans le logcat. Donnez le code correspondant.
Question 3
L'activité principale dispose d'un bouton permettant de lancer l'activité LanceDeDes quand l'utilisateur clique dessus. Donnez le code permettant de prendre en compte les clic sur le bouton de l'interface graphique de l'application principale et le lancement de l'activité correspondante.
Question 4

Le développeur de l'application a instrumenté toutes les méthodes du cycle de vie de toutes les activités de son application en utilisant le même TAG, sans erreur et sans oubli. Il souhaite ainsi vérifier l'enchaînement correcte de différents composants de son application. Pour chacune des méthodes, il affiche un message dans le logcat à l'entrée dans la méthode et un autre à la sortie.

Pour chacun des scénarios suivant, donnez la liste des messages envoyés par l'application (dans leur ordre d'apparition) dans le logcat Android ; mais cette fois-ci je vous demande également de rajouter une courte explication sur le contexte qui provoque cet affichage.
  1. L'utilisateur tient son téléphone verticalement de sorte que l'orientation de l'interface graphique soit en mode portrait. L'utilisateur lance pour la toute première fois l'application en cliquant sur son icône dans le lanceur d'application. Au bout de quelques secondes, il appuie sur le bouton « back » :
  2. En partant de l'état final précédent, l'utilisateur tient son téléphone verticalement de sorte que l'orientation de l'interface graphique soit en mode portrait. L'utilisateur relance l'application en cliquant sur son icône dans le lanceur d'application. Au bout de quelques secondes, il appuie sur le bouton « MaitreDeJeu ». Puis peu de temps après, sur le bouton « home » :
  3. En partant de l'état final précédent, l'utilisateur tenant toujours son téléphone verticalement de sorte que l'orientation de l'interface graphique soit en mode portrait, relance l'application en cliquant sur son icône dans le lanceur d'application. Après quelques secondes il clique sur le bouton « LanceDeDes » : de l'interface « MaitreDeJeu ». Puis sur le bouton « back » : .
  4. Partant de l'état précédent (l'activité est lancée et active au premier plan), l'utilisateur tient toujours son téléphone verticalement de sorte que l'orientation de l'interface graphique soit en mode portrait. Au bout de quelques secondes, l'utilisateur bascule son téléphone en mode paysage (l'orientation automatique de l'affichage étant activée sur son téléphone). Puis il simule un appel téléphonique que l'utilisateur rejette.
  5. Partant de l'état précédent (l'activité est lancée et active au premier plan), l'utilisateur tient toujours son téléphone horizontalement de sorte que l'orientation de l'interface graphique soit en mode paysage, il appuie sur le bouton « back » : . Puis au bout de quelques secondes bascule sont interface en mode portrait.

Partie 2 : IHM

Question 5
Proposez un layout XML qui représente cette image de l'interface de tirage des dés que le joueur lance depuis l'activité principale. Les choix de types de dés (4 faces, 6 faces, 8 faces…) sont pilotés par un simple clique sur le champs de texte au dessus de chaque dés, tandis que le nombre de dés effectivement actifs sont pilotés par l'appui sur la ligne de boutons en haut de l'écran.

IHM activité <code>LanceDeDes</code>
Figure 1 : IHM de l'activité LanceDeDes

La vue permettant d'afficher le résultat des Dés est une vue personnalisée VueDeDe qui étend la classe View. que nous étudierons ensuite.
Question 6
On vous demande d'implanter la classe VueDeDe permettant de dessiner à l'écran les faces de dés avec leur valeurs. On vous fournit les élément de code suivant. Pour dessiner les faces de dés dans la vues on vous fournit le code suivant qui devra être ajouté à votre implantation de la classe VueDeDe.
Commentaires



Donnez le code complet de la classe permettant d'afficher un dé, sachant que le type de dé (dé4, dé6, dé8, dé10, dé12...) est un paramètre de la vue, la valeur portée par la face est un paramètre qui sera tiré au hasard (dans la limite du nombre de face porté par le dé)...

Partie 3 : capteurs

Les dés doivent générer de nouvelles valeurs, chaque fois que l'utilisateur secoue son téléphone.
Question 7
Quel capteur allez vous utiliser pour implanter cette fonctionnalité ? Donnez le code correspondant.
Question 8
Le transfert des valeurs de dés d'une application à l'autre va s'effectuer par échange de QRcodes. Par exemple, lorsque le maître de jeu souhaite demander à un joueur de procéder à un tirage de dés il configure le tirage (nombre de dés, type de dés etc...) sur une interface et génère un QRcode contenant les informations que le joueur devant effectuer le tirage doit lire pour procéder au tirage des dés sur sa machine. On s'intéresse ici à la lecture des informations. En vous appuyant sur ce qui a été vu en TP proposez une architecture permettant de lire un QRcode et de transmettre l'information à l'activité de lancé des dés.

Partie 4 : Stockage de données

Question 9
Dans cette dernière partie, on souhaite enregistrer la configuration de dés associé par défaut à l'activité de lancer de dés. Pour chaque dés on veut mémoriser le type de dés. Proposer une solution de stockage de ce type d'information (donnez le code).
Question 10

Pour stoker de manière permanente les données d'un personnage sur le terminal, le développeur propose d'utiliser une base de donné SQLite.
Proposez le code donnant accès à la base de donnée SQLite et les requêtes permettant de lister les personnages créés et leurs caractéristiques, ainsi que les parties en cours (quel personnage dans quel partie).

Pour se faire on considèrera qu'un personnage possède au moins un nom, un nombre de points de vie, un nombre de points d'attaque et une classe d'armure (charge à vous d'enrichir ce modèle si vous le souhaitez). Tandis que la partie sera caractérisée par son nom et sa date de début.