Documentation d'implémentation de l'application Android de jeu géolocalisé

 
CONTINUER À LIRE
Documentation d'implémentation de l'application Android de jeu géolocalisé
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