Consignes

Documentation autorisée:

Tu peux utiliser tes exercices, ton TP1, les vidéos, la documentation Android, et tout ce qu'on a donné dans le cours (github, repo). Vous aurez quelques minutes au début de l'examen pour récupérer votre matériel sur GitHub ou autre plateforme en ligne.


Durée:

Tu as 110 minutes pour compléter l'examen.
1/3 temps supplémentaire : 150 minutes.


Condition de réalisation

Un projet de départ est fourni ici . Vous devrez compléter le code de MainActivity et de SecondActivity.


QUESTION 1 - Mise en page, tiroir de navigation et traduction (15 pts)

Dans l'activité MainActivity

, vous devez reproduire la mise en page suivante :
Mise en page
  • 1 point L'interface est séparée verticalement en 2 parties égales
  • 2 point La partie supérieur affiche champ d'entrée de texte d'une largeur de 200dp et un bouton d'une largeur de 100dp.
  • 1 point Le champ d'entrée de texte et le bouton sont aux extrémités de l'interface peu importe l'orientation du téléphone. Le champ d'entrée de texte est toujours à gauche et le bouton est toujours à droite.
  • 2 points Le clic sur le bouton valide que la valeur entrée est un nombre entre 1 et 1008 inclusivement. Si c'est le cas, on démarre l'activité ActivitySecond en lui envoyant le nombre entré dans le champ d'entrée de texte. Sinon, on affiche un Toast qui affiche un message d'erreur
  • 2 point La partie inférieure de l'interface est séparée en 2 parties égales. La partie gauche affiche le texte "Un", dont la couleur d'arrière-plan est "teal_200". La partie droite affiche le texte "Deux" et a une couleur d'arrière-plan purple_200.
  • 1 pointDans la deuxième activité, récupérez l'id transmis lors du clic sur le bouton. L'id sera celui utilisé pour récupérer un Pokémon (Voir question 2).
Tiroir

1 point Afficher un tiroir de navigation uniquement dans la première activité (MainActivity). Le tiroir doit contenir 2 items: "Première Page" et "Deuxième Page".

1 point La navigation fonctionne avec le tiroir dans la première activité (MainActivity) : "Première Page" amène à MainActivity et "Deuxième Page" amène à "SecondActivity".

1 point L'en-tête du tiroir indique "Intra prénom nom" en bleu foncé (#FF3F51B5) sur fond vert pâle (#FF8BC34A).

1 point L'en-tête du tiroir affiche l'image fournie avec l'énoncé qui s'appelle "professeur.png".

Traduction

2 points Les chaîness de caractères "Un" et "Deux" de l'activité "MainActivity" sont traduite en français canadien et en anglais canadien.

QUESTION 2 - Requête HTTP (5 pts)

Dans l'activité SecondActivity, vous devez ajouter le code pour effectuer l'appel réseau au serveur et afficher la réponse dans l'interface fournie.

Web service:

Ton code doit accéder à un service web disponible en méthode GET sur l'URL ci-dessous.

Le service retourne les informations d'un Pokémon, selon l'id du pokémon spécifié. Vous devez analyser la réponse du serveur et créer la classe de transfert (DTO) qui correspond aux données retournés.

https://examen-intra-h23.azurewebsites.net/Pokemon/{id}
Exemple concret pour le nombre :
https://examen-intra-h23.azurewebsites.net/Pokemon/25

2 points Dans un premier temps, récupérez les données retournées par le service dans l'activité "SecondActivity", et effectuez un logcat ou un toast du nom du Pokémon

2 points Ensuite, affichez les informations récupérées dans l'interface graphique.

1 points Finalement, gérez les cas d'erreur en affichant un message d'erreur significatif dans un toast. Par cas d'erreur on veut dire si la comunication au serveur a échoué ou si la réponse du serveur n'est pas un succès (code HTTP autre que 200).