:: Enseignements :: ESIPE :: E4INFO :: 2014-2015 :: Interface Graphique avec Android ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | GitHubSearch |
L'objectif de cet examen est de réaliser une application en binome permettant
de faire des recherches sur GitHub en utilisant l'API fourni par le site.
Le site Github offre une API qui permet de faire des recherches à partir d'un mot-clé
en utilisant une API REST au format JSON.
Par exemple, pour chercher un utilisateur
esipe, on peut utiliser la requête HTTP suivante
https://api.github.com/search/users?q=esipe
ou pour chercher un repository
esipe
https://api.github.com/search/repositories?q=esipe
Dans les deux cas, le résultat est un texte au format JSON (le format définie des objets
sous forme de clés/valeurs comme dans une table de hachage ou des tableaux).
Critère de Notation
-
L'application doit répondre au cahier des charges.
-
L'application ne doit répondre au demande de l'utilisateur sans freeze.
-
Le code doit être propre, pas de méthode de plus de 20 lignes, respect des conventions de code,
nommage correcte des variables.
-
Le code ne doit pas générer de warnings ou d'erreurs de compilation.
-
Le code ne doit pas avoir d'erreur d'erreur de concurrence.
Android permet de faire des requètes HTTP en utilisant la classe java.net.URL
et HttpURLConnection (cf le cours). De plus, la classe android.util.JSonReader
permet de lire un texte au format JSON au fil de l'eau, sans attendre la fin du flux pour commencer
à décoder le début.
Exercice 1 - Un champ de texte et une liste
-
Ecrire le code d'une activité simple permettant d'afficher un EditText en haut
et d'une liste d'item (vide) en dessous.
-
Si un utilisateur entre un texte dans le EditText puis valide un toast avec
le texte devra s'afficher.
-
Bonus: utiliser un SearchView au lieu d'un EditText
pour que la touche du clavier virtuel permettant la validation soit une loupe.
Exercice 2 - AsyncTask
Faire en sorte que lorsque l'utilisateur valide la recherche, l'application demande
à GitHub avec une requète HTTP les utilisateurs correspondant et
affiche sur la sortie de debug (donc pas graphiquement) le nom des utilisateurs
(la valeur de la clé "login") du fichier JSON.
Vous utiliserez la classe AsyncTask pour éviter de bloquer l'interface utilisateur.
Attention aux permissions !
Exercice 3 - Affichage graphique
Faire en sorte que l'affichage des noms de login s'affiche dans la liste graphique au fur et à mesure.
Exercice 4 - Cancel
Si un utilisateur demande une nouvelle recherche, la recherche précédente doit être annulée
et la liste remise à zéro.
Exercice 5 - Les imagettes
Faire en sorte que une fois que l'ensemble des logins ont été chargé, l'application charge les imagettes
une par une dans l'ordre (les imagettes sont décrites par la valeur de la clé "avatar_url" dans le fichier JSON).
Les vignettes doivent être affichées à gauche du texte du login correspondant.
Exercice 6 - Changement d'orientations
La recherche et l'affichage des imagettes doit continuer à fonctionner même
si l'on change l'orientation de l'application.
Indice: Utiliser la méthode setReatainInstance sur un fragment.
Exercice 7 - Click Long
Un click long sur un élement de la liste doit demander l'affichage
de l'URL correspondante (la valeur de la clé "html_url" dans le texte JSON)
dans le navigateur par défaut.
Exercice 8 - Maximiser la recherche
On veut que l'application fasse les recherches en parallèle en utilisant à la fois
une requète sur les utilisateurs et sur une requète sur les repositories, les résultats
sont alors reportés dans la même liste.
Au niveau du menu l'utilisateur doit pouvoir choisir si il veut la recherche et sur
les utilisateurs et sur les repositiories ou seulement sur les utilisateurs ou seulement
sur les repositories.
© Université de Marne-la-Vallée