Telechargé par jebouri

rapport final

publicité
Rapport de stage
Développement d’une application Android
Jules Dourlens
Aout – Decembre 2011
Table des matières :
Introduction
2
Présentation de l’entreprise
3
Le projet : Karafun Android
4
Introduction
5
Visite guidée
6
Fonctionnement général
10
Fonctionnement points particuliers
11
Organisation du travail et de l’équipe
17
Vers le futur
18
Bilan personnel
22
Résumé chronologique
22
Conclusion
23
Glossaire
24
Page 1
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 la mise en application 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 2
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 3
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.
Comment :
Abonnement par mois ou pour Achat par titre.
48h.
Plateforme :



Karafun Online (Web)
Karafun player
(Windows)
Karafun Mobile
(IPhone/Android)
Vente de chansons en versions
instrumentales.
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
100.000 inscrits
1.450.000 inscrits
Nombre
d’inscrits:
Page 4
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ù il veut 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.
14
12
10
8
6
4
2
0
2008
2009
2010
2011
Nombre de smartphones vendus en France en millions. (source: Gfk)
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).
Page 5
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 6
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 7
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 8
Le Lecteur
L’affichage du karaoké en lui-même
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 9
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 10
Fonctionnement points précis
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. Pour finir, nous verrons comment l’équipe est
organisée. 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 dates 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 11
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 a
une autre qui consiste à envoyer directement une vidéo au client.
Inconvénients
Avantages



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 12
Lecture d’un karaoké, c’est un jeu
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 13
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. 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 14
Player, la personnalisation et adaptation du lecteur Android.
L’interface graphique du Player 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 player
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 player 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 15
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.
2500
2000
1500
1000
500
0
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
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.
Page 16
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 17
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 18
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 19
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), dans le cas
d’une connexion 3g la qualité est moyenne (200 kbps) alors que dans le cas d’une
connexion avec wifi, la qualité est élevée (600 kbps). 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 et é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 20
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. Des librairies permettant de faire ça existent quand même mais 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 21
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 22
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 23
Glossaire :
Nom
Android
Définition
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.
Thread
Page 24
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.
Téléchargement