Upload
dinhdieu
View
214
Download
0
Embed Size (px)
Citation preview
Rapport de stage
Développement d’une application Android
Jules Dourlens
Aout – Decembre 2011
Page 1
Table des matières :
Introduction 2
Présentation de l’entreprise 3
Le projet : Karafun Android
Introduction
Visite guidée
Fonctionnement général
Fonctionnement détaillé de l’application
Organisation du travail et de l’équipe
Vers le futur
4
5
6
10
11
17
18
Bilan personnel
Résumé chronologique
Conclusion
22
22
23
Glossaire
24
Page 2
Introduction
Dans le cadre du stage qui conclue notre première année à Epitech, j’ai souhaité
effectuer mon stage dans des technologies que je ne connaissais pas en privilégiant un
rapport avec le multimédia et les jeux vidéo, de plus je voulais découvrir le monde du
travail en préférant une entreprise de taille moyenne. Ces critères de recherche m’ont
donné l’opportunité d’effectuer un stage d’une durée de 6 mois dans la société Recisio
située à Lille.
L’objectif principal du stage était le développement d’un client Android permettant aux
usagers de Karafun (service de karaoké en ligne) de profiter du service sur leur
téléphone mobile. L’intérêt de ce stage de première année est une toute nouvelle
expérience en entreprise dans le domaine informatique et plus particulièrement, dans le
développement mobile. L’adaptation au monde de l’entreprise ainsi que l’apprentissage
et l’utilisation de nouvelles technologies m’ont permis de mettre en application la
méthode apprise à Epitech mais aussi d’apprendre et de découvrir de nouvelles
techniques et méthodes de travail grâce au projet réalisé lors de mon stage.
Ce rapport commence par une présentation de l’entreprise, suivie d’une description
technique de l’application qui permettra de comprendre le projet et d’en étudier des
points précis. Pour finir ce rapport nous verrons les points à améliorer, comment
procéder aux suivis, enfin nous conclurons sur un bilan à la fois personnel et technique.
Remerciements
Je tiens avant tout à remercier l’ensemble de l’entreprise sans qui ce stage n’aurait
pas eu lieu. Je souhaite particulièrement remercier Jean-Baptiste et Barthélemy
Defossez ainsi que Marion Di Giacomo pour m’avoir fait confiance en me permettant de
réaliser ce formidable stage chez Recisio et de m’avoir guidé pendant toute sa durée.
Page 3
Présentation de l’entreprise
Recisio est une entreprise basée à Lille dont l’activité principale est la publication de deux sites internet: Karafun et Version-Karaoke. Fondée en 2005 par deux frères:
Jean-Baptiste et Barthélemy Defossez, Recisio est spécialisée dans le karaoké et plus généralement dans la musique d’accompagnement. L’entreprise a su développer au fil du temps des services pour satisfaire aux mieux les afficionados de karaoké comme les personnes aimant la musique. en passant du logiciel de lecture de karaoké, à la vente de musique en version instrumentale et un logiciel de création de karaoké. Aujourd’hui, c’est avec 1,5 millions de visites par mois et un chiffre d’affaires de 3,5M € que Recisio s’impose grâce à son équipe jeune, dynamique et surtout spécialisée dans son domaine. Recisio est composée d’une vingtaine de personnes qui travaillent à la fois pour la gestion du catalogue musical, le service clientèle ainsi que dans le domaine de l’informatique (système, développement web et développement mobile). Afin de produire ses titres et assurer une qualité irréprochable, l’entreprise travaille en collaboration avec des musiciens, artistes et studios du monde entier. Cette collaboration avec différents studios permet de faire produire la musique country dans le sud des Etats-Unis, la variété française en France et la britpop au Royaume-Uni pour atteindre une qualité qui n’a pas cessé de plaire à ses clients. Version-Karaoké est un site de vente en ligne de musiques d’accompagnement, avec un catalogue riche, les reprises de chansons sont proposées en plusieurs versions, avec ou sans voix ou personnalisables. Karafun est un service de lecture de karaoké en ligne qui permet grâce à un abonnement d’animer vos soirées entre amis ou en famille.
Vie de l’entreprise
Les locaux sont ouverts toute la semaine sauf le samedi et dimanche. Chaque mois,
la matinée du premier lundi est consacrée à une réunion permettant de tenir tous les
employés au courant des actions en cours, planifier les actions à faire mais aussi de
faire remonter d’éventuels problèmes.
Page 4
Afin de mieux comprendre les services proposés par Recisio, Voici un tableau récapitulatif des deux principaux services qu’offre l’entreprise à ses clients:
Nom :
Adresse :
www.karafun.com
www.karaoke-version.com
Service :
Service de lecture de Karaokés multiplateforme.
Vente de chansons en versions instrumentales.
Comment :
Abonnement par mois ou pour 48h.
Achat par titre.
Plateforme :
Karafun Online (Web)
Karafun player (Windows)
Karafun Mobile (IPhone/Android)
Site de e-commerce.
Catalogue :
9.000 chansons
32.712 chansons avec possibilité de personnaliser ses chansons grâce à une interface intuitive permettant de régler le volume de chaque instrument.
Visiteurs par mois: (Google analytiques)
200.000 visites 140.000 visiteurs uniques
1.300.000 visites 760.000 visiteur uniques
Nombre d’inscrits:
100.000 inscrits 1.450.000 inscrits
Page 5
Le projet : Karafun Android
Introduction
Avant de parler de Karafun Android*, nous allons d’abord voir le fonctionnement général de Karafun. Karafun est un service permettant de lire des karaokés où que vous soyez. Il propose un large catalogue ainsi qu’une interface intuitive convenant à tout utilisateur. A l’heure actuelle, Karafun se décline en 4 applications: Karafun Online (Web), Karafun Player (Windows), Karafun IPhone et Karafun Android. Ces 4 applications sont natives, ce qui leur permet de s’intégrer parfaitement à la plateforme et d’assurer à l’utilisateur un confort d’utilisation tout en favorisant de bonnes performances. Bien que pour chaque application, le langage de programmation ainsi que les librairies utilisées sont différentes, toutes communiquent avec les services de Karafun pour accéder aux chansons grâce à une API commune. Un abonné peut utiliser ces 4 applications pour s’adonner à la pratique du karaoké où et quand il veut grâce à un seul abonnement. Quelques mois avant cet état des lieux, Recisio souhaitant poursuivre et améliorer son service multi plateforme par abonnement, à la manière de Deezer ou de Last.fm qui permet à partir d’un abonnement de profiter de l’offre sur internet, sur un ordinateur ou encore sur téléphone mobile. C’était le juste moment de déployer Karafun sur mobile; En effet le marché du mobile est en pleine expansion comme nous pouvons le voir à l’aide de la mise en graphique du nombre de smartphones* vendus en France qui nous montre que ce marché devient de plus en plus important.
Apres avoir fait développer et publier l’application iPhone et iPad (déposé sur l’Apple store en avril et publié’ en aout 2011) en interne par Marion Di Giacomo (ma maître de stage). Il paraissait naturel de poursuivre cette chasse aux téléphones en développant une version dédiée à la plateforme Android qui ne cesse de prendre de l’importance. Ainsi ma mission de stage était de développer l’application Android sous la tutelle et en équipe avec Marion. Le développement de l’application a duré environ 4 mois. En premier lieu nous ferons une visite guidée de l’application. Ensuite, nous parlerons dans un premier temps de l’architecture du projet et du fonctionnement de l’application dans les grandes lignes. Ensuite nous verrons individuellement certains points clés de l’application. Cette partie n’abordera pas les difficultés au niveau personnel rencontrées au cours du stage. Ceci sera traite dans la seconde partie (voir à partir de la page 22). * Les mots suivis d’un astérisque sont définis dans le glossaire à la fin du rapport.
0
2
4
6
8
10
12
14
2008 2009 2010 2011
Nombre de smartphones vendus en France en millions. (source: Gfk)
Page 6
Au niveau de la concurrence, il n’existe pas encore de tel service sur l’Android market
mais le principal concurrent de Karafun : The Karaoke Channel qui a aussi son
application IPhone annonce la sortie imminente de son application Android.
Visite guidée de l’application.
Les menus :
En lançant l’application, un écran de chargement fait patienter l’utilisateur pendant l’ouverture de la session. Si l’utilisateur n’est pas inscrit, une session est quand même ouverte en mode anonyme. L’application nécessite une connexion internet. L’utilisateur peut utiliser l’application en mode anonyme (sans compte), en mode connecte avec ou sans abonnement.
Une fois la session ouverte, l’application propose une interface en onglet particulièrement pratique pour la navigation sur téléphone portable. L’interface est adaptée à la fois aux appareils Android mais aussi aux couleurs de Karafun. Les quatre onglets sont: Sélection, Style, Recherche et Mon compte. L’onglet sélection propose à l’utilisateur les chansons les plus populaires. Cette sélection s’adapte à ce que l’utilisateur a précédemment écouté.
Page 7
Si vous avez une tablette, Karafun Android vous propose une interface profitant du grand écran qui permet une navigation plus facile. Ainsi, la vue de sélection disparait des onglets pour être affichée à droite.
L’onglet Styles, laisse l’utilisateur la
possibilité de naviguer dans le catalogue en choisissant un style au travers de ceux proposés (Rock, Chansons d’amour, Jazz..). Une fois un style ouvert, la liste des chansons appartenant à ce style est affichée.
Dans la liste des chansons, l’icône de droite en forme de i amène l’utilisateur sur la page contenant les Informations sur la chanson sélectionnée. Les informations sont l’interpréteur de la chanson, l’année de publication, l’auteur de la chanson et les ayants droit.
Page 8
La page Mon compte permet à l’utilisateur de se connecter à son compte afin de profiter pleinement de l’application en mode abonné ou inscrit non abonné. En mode non abonné, l’utilisateur peut quand même accéder aux chansons disponibles sur Karafun mais en mode prévisualisation qui ne lui permet d’écouter que 30 secondes. En cliquant sur Créer un compte, l’utilisateur est redirige vers le site de Karafun où il peut créer son compte et s’abonner si il le désire. En bas à gauche, une capture d’écran, une fois connecté. En mode connecté, le bouton Mon compte permet de consulter les informations de son abonnement à partir du navigateur de votre téléphone (à droite).
Page 9
Le Lecteur
L’affichage du karaoké propose les mêmes effets que les autres déclinaisons de Karafun. La barre en haut contient le titre de la chanson ainsi que l’artiste. L’icône i donne plus d’informations sur la chanson. Dans la barre du bas nous retrouvons les boutons habituels d’un lecteur multimédia. Les boutons sont masqués ou montrés en fonction de l’appui ou non de l’utilisateur sur l’écran. Le lecteur comme le reste de l’application peut aussi être affiché en mode paysage. Le karaoké est mis à l’échelle ce qui offre à l’utilisateur une expérience encore plus riche (capture du bas). Sous tablette, vous pouvez afficher ou non les onglets à gauche afin de naviguer dans les menus pendant l’écoute d’une chanson.
Page 10
Fonctionnement général
L’application peut être décomposée en trois modules distincts:
L’API requester.
L’interface graphique.
Le Lecteur L’API Requester est l’adaptateur entre l’API Karafun et l’application. Il permet d’envoyer au serveur de Recisio des requêtes http et d’en recevoir le résultat au format XML*. Son rôle est aussi de parser* ces réponses au format XML pour les transformer en objets utilisables (sérialisation) par le reste de l’application. Il faut bien comprendre que l’API requester est utilisé pour recevoir des informations mais est aussi utilisé pour envoyer des informations. Par exemple dans le cas d’une demande de connexion, nous pouvons utiliser la requête suivante:
http://monWebService.fr/connect?login=Jules&motDePasse=test
Le serveur répondra ensuite oui ou non en fonction de la validité des informations de connexion. . L’interface graphique permet la navigation de l’utilisateur parmi les différentes sections afin de lancer la chanson souhaitée dans le lecteur. L’interface graphique utilise le système de vues et de fragments d’Android. Ils communiquent avec l’API Karafun afin d’ouvrir une session ou de lister les chansons ou les différents styles musicaux. Sur tablette, les vues s’adaptent automatiquement à la grande taille de l’écran en changeant leur composition pour permettre de mieux profiter de votre tablette. Le lecteur permet la lecture du karaoké. Celui-ci communique avec l’API afin de recevoir toutes les informations pour afficher le karaoké et l’adresse du fichier audio à lire. En effet Karafun ne repose pas sur du streaming de vidéo comme nous pourrions l’imaginer mais sur un affichage des informations à la main qui propose comme avantage de demander moins de transfert de données, nous détaillerons ce stockage des karaokés en XML plus tard (page 11). Afin d’afficher le karaoké nous utilisons les Canvas qui permettent l’affichage de texte, formes et d’images sur une surface de l’écran. L’affichage et la mise à jour du karaoké se fait d’une façon assez proche de celle d’un jeu vidéo. Nous en décrirons un peu plus les spécificités (page 13).
Page 11
Fonctionnement détaillé de l’application
Dans cette partie, j’ai choisi de présenter quelques points précis du projet. Nous commencerons d’abord par voir la manière dont sont stockes les fichiers karaokés, ensuite nous verrons comment l’affichage des karaokés est géré et nous finirons sur la personnalisation du player d’Android. Cette découverte de points précis ne couvre pas tous les aspects du développement de Karafun Android mais développe les points spécifiques de l’application. Le reste des notions à avoir pour comprendre le projet sont des bases du développement Android et l’utilisation de l’API de Karafun.
Comment sont stockés les karaokés ?
Dans cette partie, nous allons d’abord voir comment un karaoké est stocké et étudierons les avantages et les inconvénients de cette méthode. Nous avions vu précédemment que la communication avec le serveur de Karafun qui distribue aux différents lecteurs les karaokés reçoit des requêtes http et répond en utilisant le format XML. Les karaokés sont donc stockes dans un fichier XML. Certains éléments ne sont pas dévoilés dans le simple but de ne pas surcharger l’explication, ce sont par exemple les changements de couleur de fond, des effets comme les barres de progression qui sont affichés au début des chansons ou lors de parties instrumentales. Nous allons partir d’une vue générale pour découvrir pas à pas les différents éléments composant un fichier de karaoké. En premier lieu, on peut différencier le son et l’image. Le son est donné sous forme d’une adresse sur laquelle pointe le fichier sur les serveurs de Karafun. Le lecteur n’a qu’à lire en streaming le fichier audio. Le stockage de ce qui fera l’image est un peu plus complexe mais reste à la fois tout à fait naturel. En effet le karaoké est découpé en objets de plus en plus petits et précis. Le premier objet est le karaoké, celui-ci contient une liste de pages: - Les pages possèdent comme presque tous les autres objets, une date d’apparition et une date de disparition, ces datent permettent de faire un effet de fade in/fade out afin de faire apparaitre la page de manière fluide. De plus, les informations sur la couleur du texte sont aussi stockées dans les pages et non pour un karaoké. Ce qui permet par exemple dans le cas d’un duo, d’utiliser une couleur par chanteur. Enfin, une page contient une liste de lignes: -Les lignes possèdent elles aussi une date d’apparition et de disparition ainsi qu’une position à respecter pour l’affichage ce celles-ci. Une ligne possède également une liste de mots. -Les mots ne sont qu’une liste de syllabes: -Les syllabes contiennent du texte. Par exemple si le mot est bonjour, la liste de syllabes sera “bon” et “jour”. C’est au sein des syllabes que les indications de temps sont les plus importantes pour permettre un changement de couleur des paroles en coordination avec la musique. En effet, la gestion du défilement du texte serait trop grossière si elle était faite à un niveau supérieur.
Page 12
Voici, pour conclure, un schéma permettant de résumer cette structure :
Pour conclure cette partie, je vous propose un tableau comparatif de cette méthode à
une autre qui consiste à envoyer directement une vidéo au client en streaming*.
Avantages Inconvénients
Moins de données à transférer
(moins couteux pour des forfaits mobiles et économie de la batterie)
Quel que soit le format de l’écran, l’image sera toujours de bonne qualité. (Les machines sous Android n’ont pas de format d’écran impose.)
Possibilité d’ajouter de nouveaux effets et d’éditer les karaokés existants sans devoir régénérer une vidéo.
Pour proposer un client sous une
nouvelle plateforme, le cout de développement est plus fort.
Nous pouvons noter que cette méthode de stockage des données est non seulement
avantageuse pour n’importe quel client mais encore plus adaptée aux téléphones
mobiles.
Le choix du stockage en vidéo est utilisé par le concurrent : The Karaoke Channel sur
son application IPhone. Bien que les vidéos permettent des animations plus riches,
beaucoup d’utilisateurs sont mécontents à cause des chargements trop longs.
Page 13
L’affichage du karaoké
Pour la lecture ainsi que l’affichage du karaoké, nous retrouvons une architecture proche à celle utilisée lors de la programmation d’un jeu vidéo à la seule différence près que tout est en fonction de la position où l’on se trouve dans le fichier audio. Cette position est précise à la milliseconde près. En plus de devoir être la plus fluide possible et donc optimisée, cette partie est aussi la plus complexe du programme car pour son bon fonctionnement, elle utilise deux threads*. Le premier thread est celui servant à afficher les images, le second thread permet de charger les images en tâche de fond afin de ne pas perturber l’affichage. Le thread d’affichage compare les temps pour les pages et maintiens une liste de pages qui sont en cours d’affichage. Afin d’être affichée, une page a besoin d’être chargée en mémoire. Les pages ajoutées à la liste des pages courantes passent en fait avant dans une file d’attente pour qu’elles soient traitées par le thread de chargement. Ce thread de chargement, pour chaque page parcourt chaque ligne et chaque mot pour arriver à chaque syllabe afin de créer deux images du texte que contient la syllabe. Nous avons besoins de deux images de couleur différentes représentant le même texte afin de créer l’effet de défilement qui est fait grâce à l’affichage du texte en deux couleurs. Ce qui implique qu’une partie du texte sera la première image affichée et l’autre appartiendra à la seconde. En réalité le thread ne crée pas vraiment les deux images, car pour éviter toute allocation de mémoire pendant la lecture du karaoké, nous conservons une collection d’images vierges qui sont utilisées au fil du karaoké. L’opération de chargement d’une syllabe revient donc tout simplement à récupérer deux images libres dans la collection, s’assurer qu’elles sont transparentes et afficher le texte dessus. Une fois que les pages ne doivent plus être affichées, elles sont retirées de la liste courante des pages et remises dans la liste initiale des pages.
Ensuite, à chaque itération, le thread d’affichage parcourt toutes les pages présentes dans la liste des pages courantes et les affiche. En fait il redescend au niveau des lignes, des mots et des syllabes pour afficher les images que le thread de chargement avait précédemment chargées. Afin d’afficher la bonne progression sur les syllabes, il suffit tout simplement de réaliser un produit en croix. Nous connaissons la largeur de l’image, le temps de début et le temps de fin de la syllabe ainsi que la position actuelle dans la chanson. Il suffit donc de faire un produit en croix pour connaitre la largeur de l’image à afficher en mode “sélectionnée” et l’autre partie de l’image à afficher en mode “non sélectionnée“.
Page 14
Afin de garder une application agréable d’utilisation lors de la lecture d’un karaoké, voici quelques conseils à suivre obligatoirement :
Eviter toute allocation mémoire. En Java, une allocation mémoire va de la simple instanciation d’un objet à la manipulation d’objets comme les chaînes de caractères (concaténation, remplacement..). Ainsi vous verrez que dans le lecteur, énormément d’objets sont initialisés avant le début de la lecture du karaoké et possèdent des méthodes prepare() qui leur permettent de mobiliser les ressources une seule fois au début du karaoké. Une allocation mémoire est une opération peu coûteuse mais favorise des passages du garbage collector (GC) qui lui est assez couteux en ressources. Le garbage collector permet de libérer la mémoire qui n’est plus utilisée pour permettre l’allocation de nouvelles ressources.
Eviter toute opération sur des nombres à virgule (float, double). Sur certaines machines Android, une opération sur un nombre à virgule peut être 4 fois plus longue que sur un entier. La fonction permettant de récupérer la position dans le fichier audio en lecture nous renvoyait un chiffre à virgule en secondes. Pour optimiser l’application, nous avons multiplié tous nos temps par 1000 pour les exprimer en entiers (int).
Cela dépend des cas, mais des optimisations sont possibles lors de la création d’images. En effet, par défaut Android crée les images en Bitmap ARGB-8888, ce qui signifie qu’un pixel sera stocké sur 32 bits. Si vous n’avez pas besoin d’une si belle qualité (votre image n’a pas de dégradés ou forte nuance) vous pouvez utiliser l’ARGB-4444 stocké sur 16 bits. Dans le cas où vous n’avez pas besoin de transparence, on préfèrera le RGB-565 qui conserve une bonne qualité mais ne permet pas de définir de transparence.
Afin d’éviter les allocations dues à l’utilisation de listes ou de collections que Java fournit nativement, il est essentiel de recoder des listes sous forme de tableau statique (règle 1).
Les itérations génériques sous forme de « for (type elem : liste) » sont à éviter car malgré leur côté pratique, ces itérations allouent un objet iterator (règle 1).
Ces règles s’ajoutent aux règles standards de l’optimisation dans n’importe quel environnement. En effet, il est naturel d’éviter des traitements lourds ou des traitements qui sont inutiles. Sur Android comme sur les autres plateformes mobiles, un programme lent repoussera l’utilisateur davantage qui peut la désinstaller en appuyant sur un seul bouton. En effet, l’utilisateur recherche avant tout de l’efficacité et de la rapidité lors d’une utilisation nomade. De plus, plus le programme est lourd et non optimisé, plus il consomme de la batterie.
Page 15
Le lecteur personnalisé
L’interface graphique du lecteur a dû être entièrement recodée afin de pouvoir ajouter facilement des éléments indispensables au lecteur. Par exemple le nom de la chanson ainsi que le nom de l’artiste et le bouton permettant d’afficher plus d’informations sur la chanson. Nous sommes donc repartis du code source du MediaPlayer d’Android disponible en ligne afin de recomposer notre propre interface graphique. De plus, nous avons aussi eu l’occasion de déplacer et redimensionner certains éléments du lecteur afin de mieux correspondre à l’univers de Karafun. Enfin, ayant supprimé des fonctionnalités dont nous ne nous servions pas de celui-ci, c’est aussi un gain de performances. Voici deux captures d’écran montrant, le lecteur de base à gauche, et celui que nous avons produit à droite.
Il est intéressant de voir que Deezer, Jambo et TinyShark ont aussi du remanier l’apparence du MediaPlayer d’Android.
Page 16
En plus de l’apparence que nous avons retravaillée, une autre chose que nous avons dû remanier pour notre utilisation était la précision à laquelle la méthode getCurrentTime() nous donne la position à laquelle nous sommes dans le fichier en lecture. La méthode getCurrentTime() renvois une position qui n’est pas exacte. En effet, celle-ci saute d’intervalle en intervalle ce qui donne une impression de saccade lors de la lecture d’un morceau. Afin de corriger le problème, nous démarrons un timer lors de la lecture d’un karaoké qui permet de vérifier la cohérence du résultat de la méthode getCurrenTime() et dans le cas d’un retard d’ajouter une petite valeur à chaque fois afin d’éviter ce phénomène d’escalier. Si le lecteur est-mis en pause ce timer s’arrête. Voici un graphique représentant la position en millisecondes au cours la lecture d’un fichier audio sous Android avec et sans notre correction. (Ces données ont était extraites à l’aide d’un HTC Sensation.) Sans notre correctif, nous pouvons bien constater la présence de plateaux qui rendent l’affichage du karaoké particulièrement désagréable. En effet la courbe de couleur clair (Sans correction) évolue bien en suivant le modèle d’un escalier contrairement à celle bénéficiant de la correction qui suit le trajet d’une ligne.
Ce phénomène d’escalier peut être expliqué facilement par le fait que lors de la lecture
d’un fichier audio: mp3 par exemple. Le fichier est encodé avec un framerate. Ce qui
signifie que X millisecondes d’audio seront encodées sur N bits. Pour lire le fichier, un
buffer se déplace de N bits en N bits afin de lire le fichier. Ainsi la valeur que renvoi la
fonction getCurrentTime() n’est pas la vraie valeur mais celle où commence le frame en
cours de lecture.
Ce problème n’est pas spécifique à la plateforme Android, en effet il a été rencontre lors
du développement de Karafun sous d’autres plateformes.
0
500
1000
1500
2000
2500
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70 73 76 79 82
Avec correction Sans correction
Page 17
Organisation du travail en équipe et environnement de développement
Organisation de l’équipe
Deux personnes collaborant sur le projet ne constituent pas une grosse équipe, ce qui
facilite l’organisation du travail en équipe. Toutefois, la gestion des tâches à faire
(Implémentation d’une fonctionnalité, correction d’un bug) chez Recisio se fait depuis
peu grâce au logiciel JIRA*. Des tâches sont donc facilement assignables dans le cas
d’un bug découvert. De plus, JIRA propose une gestion des tâches par catégories ainsi
que par priorités. Ayant des postes de travail proches, au moindre soucis ou doute nous
pouvions facilement en parler. Afin de communiquer rapidement, le logiciel MSN est
aussi utilisé dans l’entreprise.
Logiciels utilisés
Afin de développer le projet, nous avons utilisé l’ÍDE Eclipse qui possède l’avantage
d’être multiplateforme. De plus, son architecture autour de plug-ins permet d’intégrer
parfaitement le SDK* Android ainsi que des outils pour le débogage, l’optimisation du
projet ou encore la gestion des versions du projet avec le plugin subclipse (SVN). Les
autres plugins intéressants à découvrir sont Eclipse MAT qui permet d’analyser les
allocations mémoires; Eclipse Color Theme qui permet de changer facilement les
couleurs de votre traitement de texte si vous êtes par exemple habitués aux consoles
blanc sur blanc. Adb monkey peut aussi être utile pour découvrir des
dysfonctionnements, c’est un programme disponible dans le SDK permettant de simuler
l’appui sur des touches du téléphone au hasard. L’ensemble de ces logiciels ont
l’avantage d’être gratuits et pour certains libres et open source.
Page 18
Vers le futur de Karafun Android
Bilan depuis la sortie
L’application a été publiée sur l’Android market le 14 novembre. En un mois, 3829
installations et au 14 décembre, plus de 1000 personnes ont l’application sur leur téléphone.
Voici l’évolution du nombre d’installation en fonction du temps. Ce graphique est directement
issu de l’Android market.
Une semaine après la sortie de l’application, nous avons mis à jour celle-ci suite à la
remontée de certains bugs. En effet, étant donné le nombre d’appareils différents ainsi que
l’instabilité des connexions mobiles, des bugs ont fait leur apparition. Nous n’avions jamais
constaté ces bugs auparavant.
L’Android market nous dévoile aussi les statistiques concernant les utilisateurs. Nous
pouvons par exemple connaitre la nationalité des utilisateurs, les appareils utilises, ainsi que
la version sous laquelle se trouve les machines. Ces informations peuvent être utiles pour la
correction de bugs. Il est aussi possible de voir ce que les gens pensent de l’application par
le biais des commentaires et des votes. Voici les résultats que Karafun possède
actuellement.
Page 19
Maintenir l’application
La première mission concernant Karafun serait le maintien de l’application. Comme nous
venons de le voir, grâce au système d’administration de la publication d’application sur
l’Android market vous pouvez voir les erreurs que rencontrent les utilisateurs avec
l’exception levée.
Par exemple, ce rapport nous montre de quel type d’erreur il s’agit et où elle a était
rencontrée dans le code.
Par exemple dans ce cas, nous pouvons voir que l’erreur est causée par l’accès à la valeur
d’un pointeur non initialisé. Nous retrouvons aussi le nombre de personnes ayant rencontrés
ce bug, ces utilisateurs peuvent aussi laisser des commentaires.
En plus des informations que nous donne l’Android market, il est possible de consulter
l’historique des connexions à l’api de Karafun. Ainsi on peut facilement connaitre ce qu’a fait
l’utilisateur avant de rencontrer un bug.
Page 20
Dans cette capture, on peut voir que l’utilisateur (moi-même) a dans l’ordre ouvert une
session en mode connecté, affiché la liste principale des chansons. Sur cette liste, j’ai
choisis de jouer la chanson ayant l’id 34797. Le paramètre bw spécifie la qualité du fichier
sonore demandé, dans le cadre d’une connexion edge elle est faible (50 kbps), moyenne
(200 kbps) pour une connexion 3G et élevée (600 kbps) pour une connexion en Wifi. Une
fois que l’on quitte une chanson, la liste de la sélection se mets à jour puis je suis allé sur
l’onglet style, affiché les chansons d’un style, puis j’ai écouté une chanson avant de quitter
l’application.
Ajouts de nouvelles fonctions
Voici une liste non exhaustive des améliorations de l’application dans le futur. Un point
important à garder en tête est que les différents clients ont l’obligation de rester uniforme. En
effet, il serait dérangeant qu’un client n’ai pas les mêmes fonctionnalités que les autres.
Enregistrement des performances
Comme le dis le deuxième commentaire que nous avons eu suite à la publication de
l’application sur le market.
Il serait intéressant de permettre à l’utilisateur de pouvoir s’enregistrer. Cet enregistrement
pourrait être simplement sonore mais aussi visuel à l’aide de la camera coté écran que
possèdent certains téléphones.
Page 21
Ecran externe
L’utilisation du terminal Android comme télécommande pour choisir les chansons et la
diffusion sur un écran de télévision pourrait être rendue possible par la popularisation
des sorties vidéos sur les appareils mobiles. Cette fonctionnalité est déjà implémentée
dans le client IPhone mais ne peut malheureusement pas encore être implémentée sur
les terminaux Android. En effet, aucune fonction ne permet encore au développeur de
choisir quoi afficher sur l’écran externe. Il est pour l’instant simplement possible de
cloner l’écran. Il existe quand même des librairies qui permettent de gérer un écran
externe mais elles sont spécifiques aux appareils des marques Motorola et HTC.
Rendre possible la création de compte depuis l’application
Pour l’instant, il est impossible de créer un compte directement depuis le terminal
Android, l’application redirige l’utilisateur vers le site de Karafun où il peut créer son
compte et s’abonner.
Cette intégration serait possible de deux manières différentes.
La première serait la création d’une version mobile de la page d’inscription et
d’abonnement de Karafun. Cette création pourrait se faire à l’aide du Framework
JQuery mobile qui permettrait de rendre l’affichage standard sur Android et
IPhone.
La seconde solution serait la création de requêtes dans l’API Karafun qui
permettraient de créer un compte. De cette manière le formulaire d’inscription
serait intégré à l’application.
Le scoring
Le scoring permet de savoir si l’utilisateur chante juste ou non. Ainsi, Karafun pourrait
prendre une dimension plus vidéo ludique à la manière du célèbre Singstar. Il est évident
que cette fonctionnalité pourrait attirer encore plus d’utilisateurs. Toutefois, cette
fonctionnalité obligera les fichiers de karaoké à contenir des informations concernant la
tonalité des paroles. A noter que Karaoke Party, un concurrent de Karafun propose à ses
abonnés ce service. Toutefois ils ne proposent leurs services que sur navigateur internet.
Page 22
Bilan personnel
Ce bilan personnel se compose de deux parties : Un bref résumé chronologique de ce
que j’ai fait au cours de mon stage qui permet de se représenter le reste du rapport d’un
point de vue chronologique. Ensuite, nous passerons à la conclusion générale, ce que
j’ai appris, ce que j’ai aimé.
Résumé Chronologique
Ce stage était pour moi une opportunité de découvrir le monde de l’entreprise. Avant
cette expérience, je n’avais qu’une idée approximative de l’entreprise et surtout de
comment le développement d’application pouvait s’y passer.
Ayant débuté mon stage en août, l’adaptation au Java et à la plateforme Android s’est
faite assez rapidement. La prise en main du projet s’est faite naturellement grâce à
l’accompagnement de Marion. J’ai eu la chance de ne pas arriver seul face à un projet à
créer de toute pièce. Certaines pièces maitresses comme la gestion des requêtes
avaient déjà étaient commencé. J’ai donc directement commencé à travailler sur les
menus et petit à petit j’ai eu l’occasion de retoucher les pièces déjà codées, pour les
ajuster, m’en inspirer ou les compléter. Un cahier des charges était présent en plus de
l’application déjà réalisée pour IPhone, ce qui permettait d’avoir une bonne visibilité des
choses à faire.
J’ai ensuite eu la chance de pouvoir choisir quelle librairie utiliser pour la réalisation du
lecteur. Cette période de deux semaines lors des vacances de mon maître de stage était
intéressante car j’ai eu la chance de pouvoir tester toutes les bibliothèques utiles à la
création de jeux vidéo sous Android et choisir celle qui conviendra le mieux au client
Karafun. En évaluant, à la fois les performances, les fonctionnalités, la pertinence de la
documentation et la stabilité des librairies, j’ai pu choisir celle avec laquelle nous avons
réussi à mener à bien le client Android.
Ensuite, l’intégration du lecteur était l’étape la plus enrichissante au niveau du code
car c’est une partie tournée vers le multimédia contrairement à la réalisation des menus.
L’optimisation ainsi que la standardisation de l’affichage à cause du grand nombre de
terminaux Android différents étaient les deux points importants.
Pour finir, la phase de vérification et publication de l’application était aussi importante
car il est important de sortir une application comportant le moins de bug possibles. Par la
suite, les rapports de certains bugs mystérieux nous ont permis de revoir certains points
de l’application et de sortir une deuxième version qui semble être vraiment stable.
Le développement de cette application était pour moi une expérience enrichissante qui
m’a permis d’apprendre de nouvelles technologies ainsi qu’un rythme de travail diffèrent.
De plus, programmer aux cotés de quelqu’un de plus expérimenté que soi permet de
facilement avoir des retours sur les choses que j’ai pu mal faire et de tirer des leçons
pour pouvoir progresser.
Page 23
Conclusion
Ce stage a été pour moi l’occasion de découvrir et d’apprendre énormément de
notions qui j’en suis sûr valoriseront mon projet professionnel. Il m’a permis d’acquérir de
la méthode, de la rigueur ainsi que les technologies permettant le développement sur
Android mais aussi sur le fonctionnement plus général d’une entreprise. De plus, ces 6
mois de stage m’ont donnés l’opportunité de découvrir au quotidien la vie d’un salarié
avec des horaires fixes tout en devant remplir les obligations de la vie en dehors du
travail.
D’un point de vue technique, j’ai pu apprendre le Java, l’utilisation d’une API avec un
échange de données en XML. J’ai aussi pu acquérir des notions de développement sur
mobile et en plus particulier le multimédia qui demande une organisation différente par
rapport aux plateformes moins limitées. De plus, j’ai eu l’occasion de me confronter à
des problèmes d’architecture due au caractère orienté objet du Java que je ne
connaissais sans jamais avoir vraiment pratiqué.
Ensuite l’organisation du projet était une partie intéressante. En effet je n’avais que très
rarement utilisé un gestionnaire de versions. De plus nous avons utilisé au début du
projet les services de Teamlab qui permet de gérer des tâches. Par la suite, nous avons
utilisé Jira qui permet une gestion du projet encore plus approfondie. Cette expérience
d’utilisation de solutions facilitant la gestion d’un projet m’a donné l’envie de poursuivre
l’utilisation de ces logiciels pour mes projets personnels mais aussi scolaires.
L’adaptation du logiciel au client ciblé est un point intéressant. Le fait de développer un
logiciel destiné au grand public est une expérience enrichissante. Comment l'utilisateur
va découvrir l’application ? Comment va-t-il s’en servir? Le logiciel doit être simpliste,
réactif et beau ce qui a était rendu possible grâce au travail de Quentin Lenne travaillant
comme graphiste chez Recisio. Par contre, la simplicité empêche l’ajout de petites
fonctionnalités bonus ou d’options de configuration qui sont chères aux yeux des
utilisateurs avancés.
Enfin, j’ai découvert les problématiques liées à la commercialisation d’un logiciel. En
effet, l’application doit être maintenue et suivie par l’entreprise pour ne pas délaisser le
client. Une entreprise comme Recisio, qui travaille dans le milieu de la musique est aussi
confrontée a des problèmes liés aux droits d’auteurs et ayants droits. Ces problèmes
soulignent le fait que les lois et la société actuelle ne sont pas encore adaptées aux
nouvelles technologies.
Ce stage fut donc pour moi la chance d’apprendre beaucoup et d’augmenter mon
ouverture d’esprit face au monde de l’entreprise et des nouvelles technologies. Je suis
sûre de garder un très bon souvenir de ces six mois de stage et j’espère pouvoir mettre
en application tout ce que j’ai appris dans mes futurs projets.
Page 24
Glossaire :
Nom Définition
Android C’est un système d’exploitation open source pour smartphone, tablette et téléviseur. La première version d’Android date de 2007.
API Application Programming Interface, permet l’interaction des programmes les uns avec les autres.
IDE Integrated Development Environment, c’est un programme regroupant un ensemble d’outils pour le développement de logiciels. Bien souvent, un IDE regroupe un éditeur de texte, un compilateur et un débogueur.
JIRA C’est un logiciel de suivi de bugs, et un système de gestion de projets développé par Atlassian Software Systems. JIRA n’est pas un acronyme mais une contraction de Gojira (le nom japonais de Godzilla).
Parser Aussi appelé l’analyse syntaxique. Permet à partir de règles définies de reconstruire un objet qui sera utilisable dans le programme.
SDK Software Developement Kit, c’est un ensemble d’outils permettant aux développeurs de créer des applications pour une plateforme précise.
Smartphone C’est un téléphone mobile disposant aussi des fonctions d’un assistant numérique personnel. Il peut aussi fournir les fonctionnalités d’agenda, de navigation sur le web, de GPS.
Streaming C’est la lecture en continu d’un fichier situé sur un serveur distant. Il n’est pas obligatoire d’attendre la fin du téléchargement avant de commencer la lecture du fichier.
Thread Un thread est l’exécution d’un ensemble d’instructions. Du point de vue de l’utilisateur ces exécutions semblent se dérouler en parallèle.
XML Extensible Markup Language est un langage informatique de balisage générique qui permet à l’utilisateur de stocker facilement ce qu’il veut dedans.