:: Enseignements :: ESIPE :: E4INFO :: 2015-2016 :: Interface Graphique avec Android ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Hello ? Is anybody here ? |
L'objectif est d'implanter un mini-chat en utilisant le server
fourni pour le projet.
Exercice 1 - Utilisation du serveur
Le serveur Python
fifoserver utilise python3. Pour lancer le
serveur, récupérez l'adresse de votre serveur et tapez dans un terminal :
python3 fifoserver.py <address>/<port>
Vous ne pouvez pas communiquer directement entre deux machines sur le réseau Wifi universitaire (en revanche cela est possible sur le réseau local Ethernet filaire). Vous pouvez donc héberger un serveur sur une machine de la salle et y accéder depuis les autres postes fixes en utilisant l'émulateur. Pour ceux qui utiliseraient des appareils en Wifi, un serveur est temporairement accessible sur
http://monge.univ-mlv.fr:12345.
Attention, le serveur Python a vocation à servir de serveur de test et non à être utilisé en production. En particulier, on remarquera que tous les messages sont stockés en mémoire ; le temps passant le serveur occupe de plus en plus de mémoire... vient ensuite le temps de le redémarrer... et tout les messages qu'il abritait sont alors perdus.
Le serveur utilise l'API REST et répond à trois commandes :
-
/ : lorsque la méthode GET est
utilisée et que rien n'est transmit dans l'URL, le serveur retourne
toutes les files disponibles sous forme d'une liste.
-
/:salon/:id?timeout=:value : lorsque la méthode
GET est utilisée et qu'un salon, l'identifiant du message
ainsi qu'une valeur de timeout (en secondes) sont transmis dans l'URL, le
serveur retourne le message correspondant sous la forme :
{
"author": "authorOfTheMessage",
"id": idOfTheMessage,
"timestamp": UNIXTimestamp,
"message": { ... }
}
-
/:salon : lorsque la méthode POST est
utilisée et qu'un salon est transmis dans l'URL, le serveur attend
des données sous la forme :
author=authorOfTheMessage&message="..."
Il stocke ce message dans le salon designé par l'URL et retourne
l'identifiant du message nouvellement enregistré sous la forme :
{
"id": id
}
Le serveur retourne toujours le résultat de la requête sous la forme d'une chaîne de caractères en UTF-8 utilisant le format JSON. Il faudra donc faire usage de la bibliothèque org.json pour analyser le résultat.
Exercice 2 - Lister les salons
Pour commencer, nous allons demander au serveur la liste des salons
disponibles et nous les afficherons dans le menu de l'application.
Pour cela, redéfinissez la méthode onPrepareOptionsMenu pour
qu'à chaque fois que l'on clique sur le menu, l'application requète le
serveur, récupère la liste des salons et les ajoute dans le menu.
-
Ajoutez les permissions nécessaires dans le AndroidManifest.xml
pour pouvoir interagir via internet.
-
Faites une méthode qui requète le serveur en utilisant la méthode
GET et qui met à jour la liste des salons disponibles.
Note : Vous ne pouvez pas interagir via internet dans la thread
courante, utilisez pour cela la classe AsyncTask (héritage).
Note 2 : Utilisez les classes
URL
et
HttpURLConnection
Note 3 : on pourra consulter cette page dont la 1ère réponse résume l'essentiel à savoir sur HttpURLConnection
-
Que se passe-t-il si vous essayez de modifier une vue à partir de la
méthode doInBackground de l'AsyncTask ?
Comment remédier à ce problème ? (deux solutions possibles)
-
Dans la méthode onPrepareOptionsMenu, mettez à jour la liste
des salons, supprimez le contenu du menu et ajoutez-y les salons.
Exercice 3 - You've got a message
Nous allons maintenant modifier un peu notre code pour pouvoir demander
au serveur un message sur un salon.
-
Modifiez le content_layout pour y ajouter un Button
et un TextView. Ce bouton va nous permettre, lorsqu'un clic
sera fait, de demander au serveur le premier message d'un salon et de
l'afficher dans le texte.
-
Modifiez le code de votre AsyncTask pour pouvoir envoyer des
paramètres dans l'url et récupérer le premier message du salon
(d'identifiant 0).
Note : Vous pouvez aussi créer une nouvelle AsyncTask.
Exercice 4 - Facteur, presse le pas, car ... n'attend pas !
Récupérez les messages des autres c'est bien, mais en écrire c'est plus
sympa.
Exercice 5 - (BONUS) Introduce yourself
En bonus, vous pouvez faire une application complète de chat en
utilisant par exemple une ListView.
© Université de Marne-la-Vallée