RECHERHCHE DU MECANISME DE LA PROGRAMMATION SUR ANDROID

66 214 0
RECHERHCHE DU MECANISME DE LA PROGRAMMATION SUR ANDROID

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

UNIVERSITE DE CANTHO FACULTE DES TECHNOLOGIES DE L’INFORMATION RECHERHCHE DU MECANISME DE LA PROGRAMMATION SUR ANDROID THÁI THANH TÍN Mémoire présenté pour l’obtention du diplôme d’ingénieur en informatique JUNE 2011  THÁI THANH TIN, 2011 RESUME Aujourd’hui, le téléphone portale devenir de plus en plus développement. Particulier les Smartphone, ils devenir moins cher que d’avant et personne peut l’acheter facilement. Mais il y a beaucoup de système d’exploitation pour Smartphone tel que : Symbian (Nokia), iOS (Apple), Windows Mobile (Microsoft), etc. Les applications écrites pour ce plate-forme ne peut pas fonctionner sur les autres alors nous avons besoin un système d’exploitation base pour toute les Smartphone. En 2005 Google a proposé le système d'exploitation Android et il a obtenu un grand succès, il y a beaucoup de producteur choisir Android pour leur produit. Aujourd’hui, les jeux en ligne sont très populaire aussi et tout le monde aime jouer des jeux sur leur téléphone, mais pour construire un système de jeu en ligne est trop coûteux et difficile, nous devons acheter les serveurs, écrit application pour le serveur et client, maintenance le système, etc. Un ide a proposé : pour quoi nous ne utilisons pas un système qui est déjà existe comme IRC et nous devons écrit seulement application pour le client. Grâce deux raison ci-dessus j’ai choisi ce thèses pour le premièrement exploiter la plate-forme Android gagner des connaissances du mécanisme de la programmation réseau sur android ensuite appliquer ces connaissance avec mes connaissance du protocole IRC (depuis mon quatrième mémoire) pour créer le jeu en ligne Gomoku qui fonctionne sur Android et utilise le serveurs d’IRC comme le serveur de jeu. LIST DES MOTS CLES ADT: Android Developpement Tool Un Android plug-in pour développer l’application API : Application Programming Interface Une API est une interface fournie par un programme informatique. Elle permet l'interaction des programmes les uns avec les autres, de manière analogue une interface homme-machine, qui rend possible l'interaction entre un homme et une machine. IDE: Integrated Development Environment Un IDE est un programme regroupant un ensemble d'outils pour le développement de logiciels. OHA: Open Handset Alliance Une alliance commerciale dont le but est de développer des standards ouverts pour les appareils mobiles. SDK: Software Development Kit Un SDK est un ensemble d'outils permettant aux développeurs de créer des applications de type défini (par exemple pour iPhone ou Android). UI : User Interface XML: Extensible Markup Language XML est un format de texte très simple et flexible dérivé de SGML CONTENU RESUME LIST DES MOTS CLES . LIST DES FIGURES LIST DES TABLEAUX . REMERCIEN . CHAPTITRE I: HOISTOIRE D’ANDROID . 1. Histoire de développement 2. Le SDK (Software Developpement Kit) . 3. Le contenu du SDK . 10 4. 5. 3.1 Documentations . 10 3.2 Les exemples 10 3.3 Les outils de développement du SDK 10 3.4 Android Development Tools Plugin ou ADT 11 Configurer votre environnement de développement . 11 4.1 Installation du SDK 11 4.2 Installer et configurer Eclipse 14 4.3 Installer le module ADT pour Eclipse . 14 L’architecte d’Android plate-forme 15 5.1 Linux noyau . 15 5.2 Les bibliothèques . 16 5.3 Android Runtime 16 5.4 Framework applicatif . 17 5.5 Application and Widgets 17 CHAPTIRE : EXPLORATION D’UNE ANDORID APPLICATION . 18 1. Les fondamentaux d’une application Android 18 2. Les composants applicatifs . 18 2.1 Activité . 18 2.2 Services . 19 2.3 Fournisseurs de contenu . 19 2.4 Récepteur d’Intents (Broadcast Receiver) 19 3. Cycle de vie d’une application 20 4. Permissions . 22 5. Le ficher de configuration . 24 6. Application ressources 25 6.1 Utilisation des ressources 26 6.2 Créer des ressources . 26 CHAPITRE :L’INTERFACE D’UTILISATEUR . 30 1. Structure de l’interface 30 2. Définir une l’interface . 30 2.1 Définir notre interface en XML . 30 2.2 Créer une interface sans définition XML . 31 3. Gabarits (Layout) 32 4. Les vues communs 32 4.1 Textview . 32 4.2 EditText . 33 4.3 Button . 33 4.1 ImageButton 34 4.2 CheckBox . 35 4.3 RadioButton . 36 4.4 ListView . 37 4.5 Menu . 37 CHAPITRE :INTENT ET SERVICE 39 1. 2. Intent . 39 1.1 Principe de fonctionnement 39 1.2 Démarrer une activité . 40 1.3 Déléguer au système le choix de l’application 40 1.4 Embarquer des données supplémentaires 42 Service . 43 2.1 Started service . 43 2.2 Bound Service 44 2.3 Créer un service 44 2.4 Registration un service . 45 2.5 Démarrer et arrêter un service 45 2.6 Cycle de vie d’un service 46 CHAPITRE : THREAD SUR ANDROID . 47 1. Thread sur android 47 2. Exécution et communication entre threads avec la classe Handler . 47 3. Utiliser les messages . 48 4. Exemple 48 CHPAPITRE : APPLICATION . 51 1. Problème et solution . 51 2. Analyser la solution 51 3. Les objectifs de l’application 51 4. Présentation de l’application. 52 4.1 Le base de donne . 52 4.2 Les classes dans programmation (sur téléphone) 53 4.3 Schéma Usecase 53 4.4 Schéma Class 54 4.5 Les fonctions de l’application . 54 4.6 Les images de l’application . 58 COLUSION 61 1. Les buts et leurs résultats. . 61 2. L’imitation 61 3. Le développement dans la future 61 4. Pour moi 61 REFERENCES . 62 LIST DES FIGURES Figure 1. Le contenu d’Android SDK Figure 2. L’interface du SDK Manager Figure 3. Liste de paquetages disponibles pour installer Figure 4. Les modules sont téléchargé et installé Figure 5. L’installation termine Figure 6. L’installation de l’ADT plug-in Figure 7. Les composants majeurs de la plate-forme Android. Figure 8. Les composants d’une appliation Figure 9. Cycle de vie d’une activité Figure 10. Le mis en page(Layout) ressource Figure 11. Structure de l’interface Figure 12. Definir l’interface en XML Figure 13. TextView Figure 14. EditText Figure 15. ImageBouton Figure 16. CheckBox Figure 17.RadioButton Figure 18. ListView Figure 19. OptionMenu(gauche) et ContextMenu(droite) Figure 20. Cycle de vie d’un service Figure 21. Chaque barre de progression d’avancer de 10 %. Figure 22. Le base de doné Figure 23. Le schéma Usecase Figure 24. Le schéma class Figure 25. Processus de registration Figure 26. Processus d’autorisation Figure 27. Processus d’invitation Figure 28. Registrer un nouvel compte Figure 29. Se connexion Figure 30. L’interface de chatter Figure 31. Les informations de jeu . LIST DES TABLEAUX Tableau 1. Les versions d’Android plate-forme Tableau 2. Les element du session Tableau 3. Les ressources Tableau 4. Les actions natives du système Tableau 5. Les méthodes manipulent le message CHAPITRE : THREAD SUR ANDROID 1. Thread sur android Le thread principal, appelé plus communément User Interface thread ou UI thread, est le point d'orgue de touteapplication Android. L'UI thread est un thread dédié aux traitements des interactions utilisateurs et l'affichage. Ainsi lorsque vous touchez du doigt l'écran du dispositif Android et qu'une action s'en suit, c'est grâce ce thread. De la même manière lorsqu'on constate un changement de l'affichage tel que le texte d'un bouton qui est modifié, c'est encore grâce l'UI thread. On ne peut que constater que ce thread est au coeur de toute application Java sous Android. Vous vous devez de livrer une application qui réagisse rapidement aux actions de l’utilisateur. Au-delà de secondes d’attente, le gestionnaire d’activité ActivityManager peut prendre la décision de tuer votre service en le considérant comme une application sans réponse. Il existe cependant des solutions permettant de laisser votre application et votre service actif pour longtemps : • Faire le travail dans un thread en arrière-plan • Faire faire le travail par un service d’arrière-plan, en se servant des notifications pour ramener votre utilisateur vers l’activité. La plate-forme Android offre quelques raffinements pour pouvoir utiliser des threads d’arrière-plan et pouvoir échanger avec le thread de l’interface utilisateur. Ces écanismes se trouvent implémentés au sein des classes Runnable et Handler. 2. Exécution et communication entre threads avec la classe Handler La façon la plus simple de gérer une tâche en arrière-plan est de créer un thread en implémentant une classe dérivant de Handler. Vous pouvez utiliser une même instance de cette classe dans l’activité en cours. La classe Handler vous rendra la vie relativement facile puisqu’il suffit simplement de l’instancier pour quelle s’enregistre d’elle-même dans la gestion des threads du système Android. Le thread ainsi créé, exécutant votre travail d’arrière-plan communique, avec l’instance de Handler du thread de l’interface utilisateur. Cela permet au thread de l’interface utilisateur, qui exécute le travail courant, de pouvoir mettre jour l’interface en fonction de l’activité réalisée en arrière-plan. C’est un point essentiel qui vous servira, car si vous souhaitez mettre jour l’interface utilisateur, vous devez impérativement utiliser le thread de l’interface utilisateur. Nous reviendrons sur ce point plus loin. Pour communiquer avec l’instance de Handler vous pouvez utiliser les messages ou les objets Runnable. Voyons ensemble ces deux possibilités. 47 3. Utiliser les messages Pour communiquer entre les threads d’un Handler, vous pouvez utiliser un système de messages. Ce système permet d’ajouter des messages dans une file et de les traiter dans leur ordre d’arrivée. Pour envoyer un message l’instance de Handler, vous devez d’abord récupérer une instance de Message en appelant la méthode obtainMessage. Il existe plusieurs sur charges de cette méthode, l’une vous retournant une instance vide d’un Message et une autre déjà complétée avec différents identifiants. Vous pouvez utiliser l’une ou l’autre des méthodes, cependant plus la tâche sera complexe plus vous aurez spécifier de données de façon ce que l’instance de Handler puisse traiter votre demande. Une fois le message créé et configuré, vous allez devoir placer ce message dans la file de messages avec les méthodes sendMessage, sendMessageAtFrontOfQueue, sendMessageDelayed et sendMessageAtTime. Tableau 5. Les méthodes manipulent le message. Il existe aussi des variantes de ces méthodes pour envoyer des messages vides : ils’agit des méthodes sendEmptyMessage, sendEmptyMessageDelayed et sendEmptyMessageAtTime qui possèdent le même comportement que leurs grandes sœurs décrites dans le tableau. La seule différence est que vous n’avez pas fournir d’objet Message mais un entier comme seule donnée de communication. Une fois le message envoyé et pour chaque message dans la file, c’est la méthode handleMessage de votre implémentation de Handler qui sera appelée pour leur traitement. De cette façon là, vous pourrez mettre jour votre interface utilisateur directement dans le handler. Cependant, sachez que pendant que vous mettez jour votre interface utilisateur, les autres threads destinés l’interface utilisateur seront interrompus. 4. Exemple Un exemple typique de l’utilisation de la classe Handler pour gérer les threads est l’intégration d’une barre de progression dans l’interface. 48 Voici le fichier de la mise en page de l’activité : Voici le code associé utilisant Handler pour communiquer entre le thread d’arrière plan et celui de l’interface utilisateur : public class HandlerActivite extends Activity { // La barre de progression mettre jour ProgressBar barreProgression; // Comme pour les threads classiques, nous gardons la trace de son activité. boolean enExecution = false; // Notre sous-classe Handler qui gère le traitement des messages. final Handler handler = new Handler() { @Override public void handleMessage(Message msg) { barreProgression.incrementProgressBy(10); } }; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); barreProgression = (ProgressBar) findViewById(R.id.barre_progression); } public void onStart() { super.onStart(); barreProgression.setProgress(0); // Réinitialise la barre de progression. // Création d’un thread d’arrière-plan qui envoie un message au handler // toutes les secondes. Thread threadArrierePlan = new Thread(new Runnable() { public void run() { try { for (int i = 0; enExecution && i < 10; ++i) { // Mise en pause d’une seconde Thread.sleep(1000); 49 // Création d’un message vide Message msg = handler.obtainMessage(); // Envoi du message au handler handler.sendMessage(msg); } } catch (Throwable t) { } } }); enExecution = true; // Lancement du thread d’arrière-plan threadArrierePlan.start(); } public void onStop() { super.onStop(); enExecution = false; } } Nous créons notre propre implémentation de la méthode handleMessage de l’instance de Handler directement dans l’activité. Dans cette implémentation, chaque fois qu’un message est traité, nous demandons la barre de progression d’avancer de 10 %. La méthode onStart crée un thread d’arrière-plan afin d’envoyer des messages toutes les secondes qui seront traités par le thread du handler. Cela a pour résultat de faire progresser la barre de progression de 10 % toutes les secondes. Figure 21. Chaque barre de progression d’avancer de 10 %. Bien que la classe Handler facilite la vie des développeurs Android, sachez que l’utilisation de threads dans une application apporte une certaine complexité cette dernière. Que ce soit au niveau de la logique de l’application, du débogage ou de la maintenance, cette complexité n’est pas le seul impact, puisque les threads ont aussi une influence sur la mémoire, la puissance de calcul utilisée et donc sur la durée de vie de la batterie. 50 CHPAPITRE : APPLICATION 1. Problème et solution Jouer jeux sur téléphone est de plus en plus populaire, surtout avec les smartphones nous pouvons jouer le jeu en ligne, en particulier celles jeux de combat, tels que caro, échecs, jeu d'échecs traditionnel, etc. Mais pour construit un système de jeux en ligne très difficile et cher, alors l’idée de d’utilisation le système de réseau IRC est considéré. Il y a deux principaux avantages quand réutiliser le système de réseau IRC : Il ne faut pas construit le système de servers c'est-à-dire nous ne pouvons pas avoir beaucoup d’argent. Le protocole IRC est open source. 2. Analyser la solution Problèmes: • Nous ne sommes pas le administrateur du système IRC alors nous ne pouvons pas contrôle et gérer les utilisateurs. • Les informations d’un utilisateur doit être stocké sur un base de donné. • Nous avons besoin un nouvel protocole pour transférer message est information base sur le protocole Solutions : • Pour control et gérer les utilisateurs nous allons créer des canaux sur IRC et nous sera le operateur de ces canaux. • Pour stocker les informations d’un utilisateur nous allons utiliser un ordinateur qui connecte IRC et est l’operateur des canaux. Nous allons utilisons le base de donné MySQL. • Rechercher le protocole IRC pour créer un nouvel protocole 3. Les objectifs de l’application • • • • • • Connecter a IRC serveur Registrer un nouvel compte Recevoir la liste de joueur Inviter un joueur. Jouer au jeu. Stocker les informations d’utilisateur. 51 4. Présentation de l’application. Cette application est construite par trois personnes, la responsabilité de chaque personne : Truong Thien Thanh : Rechercher le IRC protocole et créer un nouvel protocole. Le An : Rechercher la programmation multimédia et créer le jeu. Thai Thanh Tin : Rechercher le mécanisme de la programmation réseau et pour faire la communication entre utilisateurs. 4.1 Le base de donne Voila les tableux dans le base de donne de l’application (sur le bot). USER USERNAME PASS EMAIL POINT WIN LOSE MID PLAY TABLE PLAYER1 PLAYER2 ONLINE SESSIONNAME USERNAME STATUS Figure 22. Le base de doné Le tableau USER est utilisé pour stocker les informations d’utilisateur : USERNAME : le nom de compte PASS : le mot de passe EMAIL : l’email d’utilisateur POINT : le point d’utilisateur WIN : numéro de match qu’utilisateur gagne LOSE : numéro de match qu’utilisateur perdu MID : numéro de match qu’utilisateur Le tableau ONLINE est utilisé pour stocker le utilisateur qui est enligne, quand l’utilisateur hors ligne les informations va déplacer. 52 SESSIONNAME : le nom utilisé quand connecter a IRC, il est générâtes automatiquement. USERNAME : le nom de compte STATUS : le statut d’utilisateur, est libre est n’est pas libre. Le tableau PLAY est utilise pour stoker les informations de chambre TABLE : nom de chambre PLAYER : nom de compte d’utilisateur PLAYER2 : nom de compte d’utilisateur22 4.2 Les classes dans programmation (sur téléphone) BackgroundService.java : exécuter les extensifs travaux, traiter des informations et envoyer le résultat l’interface. BackgroudProcess.java : c’est un thread qui aider BackgroundService Register.java:pour registrer un nouvel compte Login.java : se connecter a serveur. Online.java : pour lister les utilisateurs qui sont en ligne. GomokuGame.java : pour stocker la coordonnée de la pièce d’échecs. GomokuView.java : pour dessiner l’échiquier. Tool.java : pour changer la taille de l’échiquier pour adapter avec les différences écrans résolution. Chat.java : pour chatter About.java : pour afficher les informations de jeu. 4.3 Schéma Usecase Figure 23. Le schéma Usecase 53 4.4 Schéma Class Figure 24. Le schéma class 4.5 Les fonctions de l’application Application a des fonctions suivant : registre un compte, autorisation, inviter un joueur, chatter. Registration : Pour registre un compte utilisateur doit fournir les informations : nom de compte, mot de passe, email. REG nom_de_compte mot_de_passe email Quand operateur recevoir les informations de registration il va les valider : si le nom de compte est existence, si l’email a déjà utilise. Si tout les informations est valide le compte va être créé(les informations d’utilisateur sont stocké sur base de donné). 54 Utilisateur REG nom pass email ERR_NICKNAMEINUSE Operateur Si le compte est existence? OUI NON ERR_EMAILALREADYINUSE OUI Si l’email est existence? REL_REGISTERSUCESS NON Socker dans le base de donné Figure 25. Processus de registration Autorisation Utilisateur doit offre le nom de compte et le mot de passe pour jouer le jeu. Quand operateur recevoir les informations d’autorisation il va les valider. Si toutes les informations sont correct utilisateur va recevoir une liste des joueurs qui sont enligne sur téléphone. 55 Utilisateur LOG nom Operateur Le base de doné ERR_LOGINUNSUCCESSFU Si le compte est existence? NON OUI ERR_LOGINUNSUCCESSFU REL_LOGINSUCCESSFUL Le mot de passe est exact? NON QUI Figure 26. Processus d’autorisation Invitation : Pour invite un autre joueur nous utilisons le fonctionne invitation, joueur va envoyer le message INVITE nom_joueur_2 a operateur, operateur va vérifier si le joueur est libre si le joueur est libre il va transférer le message a joueur si non il va envoyer un message de errer a joueur. Quand jouer recevoir le message une unification va être présenté sur écran de téléphone, si joueur accepte la invitation le message ACCEPT nom_joueur_1 va envoyer a joueur sinon le message REFUSE va être envoyé. Quand joueur recevoir le message ACCEPT de joueur si joueur ne change pas ide il va envoyer la message START nom_de_joueur1 nom_de_jour_2 operateur pour créer une chambre, sinon aucun message va être envoyé. Quand operateur recevoir le message START il va créer un nouvel canal pour joueur 1et joueur et envoyer le message ROOM nom_de_chambre mot_de_passe session _name_ joueur_1 joueur et ROOM nom_de_chambre mot_de_passe session_name_joueur_2 joueur 1. Chaque joueur quand recevoir ce message va participer le canal nom_de_chambre avec le mot de passe mot_de_pass. Dernière operateur va envoyer le message PLAY tous les deux joueurs pour annoncer de commencer le jeu. Maintenance deux joueurs va contacter l’autre directement. 56 INVITE joueur Joueur Inviter un novel joueur NON ERROR Joueur Operateur OUI Si joueur est libre? INVITE_BY joueur NON ACCPET/REFUS Si le joueur accept mon invitation ? Si joueur accept le invitation? OUI OUI Si le joueur changer son idé ? NON START joueur1 jouer2 Creer le chambre ROOM nom pass session1 PLAY ROOM nom pass session2 Commencer le jeu PLAY TURN TURN Figure 27. Processus d’invitation 57 Chatter Les utilisateurs peuvent discuter avec les autres par utiliser la fonction chat tandis qu’ils jouent le jeu, les messages sont transférer directement en eux. 4.6 Les images de l’application L’interface de registration Figure 28. Registrer un nouvel compte L’interface de se connecxion Figure 29. Se connexion 58 L’interface de jeu Figure 30. L’interface de jeu L’interface de chatter Figure 30. L’interface de chatter 59 Les informations de jeu Figure 31. Les informations de jeu 60 COLUSION 1. Les buts et leurs résultats. Connecter a IRC serveur : OUI Registrer un nouvel compte : OUI Recevoir la liste d’utilisateurs : OUI Inviter un joueur : OUI Jouez le jeu : OUI Stocker les informations d’utilisateur : OUI 2. L’imitation La taille de l’échiquier est petite, maintenance il y a seulement 15 linges et colonnes si toutes les boîtes sont scellées, ils ne peuvent pas continuer jouer. L’interface n’est pas intéressant, la liste de joueur très simple il y n’a pas beaucoup d’information de joueur. Les informations transférer sur internet en plain-text ce n’est pas sécurité. 3. Le développement dans la future Dans la future je vais élargir la taille de l’échiquier et modifier la liste de joueur pour afficher plus informations comme le point, statut, etc, encrypter les informations avant les transférer. Si le jeu est complètement je vais le publier Android Market. 4. Pour moi Un des principaux avantages de ce stage été pour moi de découvrir Android plate-forme. J'ai appris beaucoup de Android tel que comment on crée et lance une activité, comment on crée et démarre un service, comment on gérer les threads, etc. En plus Android est un des plus communs OS pour téléphone, avec les connaissances que j’ai eues je peux rechercher un bon travail. 61 REFERENCES EBOOK [1] Copyright © 2009 Ed Burnette Hello Android 2nd (Chapitre 1-2)- introducing Google’s Mobile Development Platform. The Pragmatic Bookshelf [2] Copyright © 2009 by Sayed Y.Hashimi, Satya Komatineni and Dave MacLean. Pro Android 2(Chapitre 1-5). Springer-Verlag New York, Inc., [3] Copyright © 2009 by Damien Guignard, Julien Chable, Emmanuel Robles. Programmation Android. Website: www.android-le-livre.fr, http://www.editionseyrolles.com WEBSITE [4] http://developer.android.com/index.html [5] http://www.developpez.com/ [6] http://fr.wikipedia.org/wiki/Android/ 62 [...]... 5 Larchitecte dAndroid plate-forme Android est une pile logicielle pour les appareils mobiles composộ dun systốme dexploitation, de middleware et dapplications clộs Le SDK Android fournit les outils et les API nộcessaires pour commencer dộvelopper des applications sur la plate-forme Android en utilisant le langage de programmation Java Les composants majeurs de la plate-forme Android sont rộsumộs sur. .. accessibles et utilisộes depuis le code grõce la classe statique R Cette classe est automatiquement gộnộrộe en fonction des ressources prộsentes dans votre projet au moment de la compilation et de la construction de lapplication La classe R contient donc des classes en membres statiques pour chaque type de ressources dộfini dans le projet Nous pouvons accộder des ressources via les sous classes R.string... . des applications sur la plate-forme Android en utilisant le langage de programmation Java. Les composants majeurs de la plate-forme Android sont résumés sur le schéma suivant (traduit de la. UNIVERSITE DE CANTHO FACULTE DES TECHNOLOGIES DE L’INFORMATION RECHERHCHE DU MECANISME DE LA PROGRAMMATION SUR ANDROID THÁI THANH TÍN Mémoire présenté pour l’obtention du. basé sur la plate-forme Android. Quelques jours après que Google a annoncé la disponibilité d&apos ;Android SDK Release Candidate 1.0. En Octobre 2008, Google a fait la source code de la plate-forme

Ngày đăng: 16/09/2015, 10:02

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan