Documentation d'implémentation de l'application Android de jeu géolocalisé
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
ENSIMAG 2A Projet de spécialité jeudi 14 juin 2012 Documentation d’implémentation de l’application Android de jeu géolocalisé Introduction Ce document décrit l’implémentation de l’application Android en précisant l’organisation du code et les différentes fonctionnalités. Benoît Raymond - Matiaz Ouine - David Duménil - Florian Guffon 1/8
ENSIMAG 2A Projet de spécialité jeudi 14 juin 2012 Table des matières Introduction ................................................................................................................................. 1 Note sur la structure d’une application Android ......................................................................... 3 Bouton Home ...................................................................................................................... 4 Bouton Menu ....................................................................................................................... 5 Bouton Retour ..................................................................................................................... 5 Structure générale de l’application ............................................................................................ 6 Le package activity ..................................................................................................................... 6 Le package communication ....................................................................................................... 7 Le package map ......................................................................................................................... 7 Le package game ....................................................................................................................... 7 Le package ui ............................................................................................................................. 8 Les données de l’application ...................................................................................................... 8 Les ressources ........................................................................................................................... 8 Benoît Raymond - Matiaz Ouine - David Duménil - Florian Guffon 2/8
ENSIMAG 2A Projet de spécialité jeudi 14 juin 2012 Note sur la structure d’une application Android Cette partie présente la structure d’une application Android et met en avant les différences par rapport à une application standard. Une application Android se code en Java en utilisant le SDK Android. Les activités Une application Android comporte au moins une activité. Une activité est une classe héritant de la classe Activity, elle correspond à une vue de l’application. Une activité doit être déclaré dans le fichier AndroidManifest.xml sous la forme : L’ajout de ces lignes dans la balise permet de définir quelle est l’activité qui sera lancée au démarrage de l’application : Les layouts Le répertoire res/layout contient des fichiers XML représentant les vues utilisés par l’application. Ces fichiers xml permettent de définir l’emplacement des composants qui constituent la vue. Ces layout sont ensuite utilisés par les activités ou par des composants personnalisés. Le cycle de vie Il est important de prendre en compte le cycle de vie d’une application notamment le fait qu’une activité n’est pas forcément détruite lorsqu’elle n’est plus affichée. Le schéma ci- dessous résume le cycle de vie d’une activité. Benoît Raymond - Matiaz Ouine - David Duménil - Florian Guffon 3/8
ENSIMAG 2A Projet de spécialité jeudi 14 juin 2012 Le changement d’activités Le passage d’une activité à une autre se fait uniquement à l’aide d’un objet de type Intent. Il est possible de passer des paramètres à ses objets pour pouvoir échanger des données entre les activités. Les boutons du mobile L’utilisation des boutons du mobile influe sur l’application et ont une action par défaut qui peut être surchargée. Bouton Home Ce bouton retourne à l’écran d’accueil du mobile. L’activité en cours est mise en pause. Benoît Raymond - Matiaz Ouine - David Duménil - Florian Guffon 4/8
ENSIMAG 2A Projet de spécialité jeudi 14 juin 2012 Bouton Menu Ce bouton affiche le menu associé à l’application si l’activité a surchargé la méthode onCreateOptionsMenu(Menu). Bouton Retour Ce bouton ferme l’activité actuellement à l’écran ou la fenêtre de dialogue qui est affichée. La gestion des threads Dans une application Android, une activité et les vues qui la composent ne peuvent être modifiées que par le thread qui les a créées. En conséquence si l’on souhaite modifier dans un autre thread le contenu d’une activité, il faut passer par un objet intermédiaire de type Handler. Ce handler est initialisé dans l’activité en tant que classe anonyme sous cette forme: handler = new Handler() { @Override public void handleMessage(Message msg) { // code de l'action à réaliser modifiant la vue } }; Dans le thread, il est alors possible d’appeler ce handler et de lui envoyer un message de cette manière : Message msg = new Message(); handler.sendMessage(msg); Lorsque le handler reçoit un message, il appelle sa méthode handleMessage et effectue l’action correspondant à ce message. Comme il a été crée dans l’activité, le handler peut modifier la vue comme il le souhaite. Schéma résumant l’utilisation d’un Handler pour modifier l’activité par un thread externe Benoît Raymond - Matiaz Ouine - David Duménil - Florian Guffon 5/8
ENSIMAG 2A Projet de spécialité jeudi 14 juin 2012 Structure générale de l’application Le diagramme ci-dessous introduit la disposition des packages dans l’application. Le package racine se nomme com.imag.geoandroid abrégé ici en geoandroid. L’application utilise le package GGPpacket qui fournit les fonctionnalités pour communiquer selon le protocole GGP. Les paquets sont organisés de manière à séparer au maximum les mécanismes d’interactions, de géolocalisation ainsi que de communication avec le serveur du jeu lui même. Le package activity Le package activity contient les classes représentant les différentes activités de l’application. ConnexionActivity C’est l’activité principale de l’application qui est lancée au démarrage, elle permet au joueur de se connecter ou de se diriger vers l’activité de création de compte. CreationCompteActivity Cette activité permet à un nouveau joueur de créer un compte. GeoAndroidGameActivity Benoît Raymond - Matiaz Ouine - David Duménil - Florian Guffon 6/8
ENSIMAG 2A Projet de spécialité jeudi 14 juin 2012 Cette activité contient la carte GooogleMap ainsi que les différents marqueurs représentant les joueurs et les lieux. Elle permet également d’afficher des fenêtres de dialogue en interragissant avec les lieux et les joueurs. InventaireActivity Cette activité permet d’afficher les caractéristiques du joueur ainsi que les objets contenus dans son inventaire. Il est possible d’y afficher le détail d’un objet et de l’utiliser. ListeMessageActivity Cette activité permet au joueur de consulter l’ensemble des messages reçus depuis qu’il s’est connecté. TransactionActivity Cette activité permet de gérer l’achat et la vente d’objet dans un lieu. Le package communication Le package communication contient les classes gérant l’envoi et la réception de paquets vers le serveur. Il utilise le package GGPpacket commun avec le serveur qui permet la création de paquets selon le protocole GGP que nous avons défini. Ce package fournit également deux interfaces ErrorProcess et ResponseProcessing. ErrorProcess doit être implémentée par les activités afin de gérer le cas où les paquets reçus indiquent une erreur, ainsi chaque activité à le choix de traiter ou non cette erreur. ResponseProcessing doit être implémentée pour pouvoir définir les traitements à effectuer lors de la réception des paquets de réponse. En qui concerne les communications, l’application envoie le paquet au serveur, puis attend la réponse dans un thread (pour ne pas bloquer l’application si la réponse n’arrive pas), puis la réponse est traitée. Le fait que la réponse soit traitée par un thread peut être source de problèmes, car une vue ne peut être modifiée que par l’activité qui l’a créée. Le thread n’a donc pas le droit de mettre à jour une vue déja existante. Pour cela il faut utiliser un handler créé dans l’activité et lui envoyer des messages depuis le thread afin de mettre à jour les vues. Le package map Le package map contient les classes modélisant les composants de la carte (BasicItemizedOverlay, JoueurItemizedOverlay, LieuxItemizedOverlay et MapCircleOverlay) ainsi que les classes gérant le changement de géolocalisation (GeoGameMapListener et LocationUpdater). Le package game Ce package contient les classes modélisant les données du jeu (Joueur, Lieu, Objet). Il contient également la classe GameResponseProcessing qui implémente Benoît Raymond - Matiaz Ouine - David Duménil - Florian Guffon 7/8
ENSIMAG 2A Projet de spécialité jeudi 14 juin 2012 l’interface ResponseProcessing et définit des traitements des paquets reçus en fonction du règles du jeu. Le package ui Ce package contient tout ce qui concerne les composants visuels et les interactions utilisateurs sur les vues. Le package view Le package view contient les composants Android redéfinis pour l’application comme le composant affichant un objet. Le package dragdrop Le package dragdrop contient les classes et interfaces nécessaires à l’implémentation d’une interaction de type drag and drop. Ce package est nécessaire si l’application utilise une version du sdk antérieur à 4.0 car ces fonctionnalités ne sont pas fournies nativement. Les données de l’application Les données de l’application sont conservées dans la classe MyApplication héritant d’Application. On y retrouve notamment des informations sur le joueur connecté, l’activité courante et l’objet effectuant les traitements pour les paquets de réponse. Ainsi nous partageons des données entre toutes les activités de l’application. La classe MenuFunctions contient les méthodes statiques définissant les fonctionnalités du menu qui sont communes à toutes les activités et qui permettent de passer d’une activité à une autre. Les ressources Toutes les images utilisées par l’application sont présentes dans les ressources. On retrouve également dans le fichier res/values/couleurs.xml les informations concernant les styles généraux et dans le fichier res/values/string.xml les chaînes de caractères personnalisables de l’application. Enfin le répertoire res/layout contient l’ensemble des layouts utilisés par les activités et les différents composants visuels de l’application. Benoît Raymond - Matiaz Ouine - David Duménil - Florian Guffon 8/8
Vous pouvez aussi lire