Advertisement
  1. Code
  2. Android SDK

Création d'un lecteur musical sous Android : configuration du projet

by
Read Time:10 minsLanguages:

French (Français) translation by Éric Bédard (you can also view the original English article)

La plateforme Android fournit des outils pour gérer la lecture de contenu multimédia que vos applications peuvent utiliser pour créer une interface entre l'utilisateur et leurs fichiers musicaux. Dans cette série de tutoriels, nous allons créer une application basique de lecture de musique pour Android. L'application affichera une liste de chansons sur le téléphone de l'utilisateur afin que celui-ci puisse sélectionner les morceaux à lire. L'application aura également des contrôles permettant de gérer la lecture de la musique et continuera de jouer la musique lorsque l'utilisateur quittera l'application, avec une notification qui sera affichée pendant la lecture de la musique.

Introduction

L'élaboration du lecteur de musique vous amènera à utiliser la classe ContentResolver pour trouver les chansons sur l'appareil, la classe MediaPlayer pour lire les sons audio et enfin la classe MediaController pour contrôler la lecture de la musique.  Nous utiliserons également une instance de Service pour continuer à jouer la musique lorsque l'utilisateur n'interagit pas directement avec l'application. Vous devriez être en mesure de terminer cette série de tutoriels, si vous êtes un développeur Android intermédiaire. Donc si vous avez déjà créé quelques applications ces tutoriels ne devraient pas être un problème pour vous. Voici un aperçu de l'application finale :

Android Music PlayerAndroid Music PlayerAndroid Music Player

Dans ce tutoriel, nous créerons l'application et répertorierons les fichiers audio stockés sur le téléphone de l'utilisateur en utilisant les classes ContentResolver et Cursor. Dans la prochaine partie, nous allons utiliser une instance Adapter pour afficher les chansons dans un 'list view', en commençant la lecture lorsque l'utilisateur clique sur un élément dans la liste de musique. Dans la dernière partie de ce tutoriel, nous allons utiliser la classe MediaController pour donner à l'utilisateur un contrôle sur la lecture, implémentant des fonctions pour jouer la musique suivante et précédente ainsi qu'une fonction de lecture aléatoire. Après ce tutoriel, nous allons voir d'autres moyens de gérer la musique qui améliorerons l'application, notamment la gestion du focus audio, présentant les fichiers multimédias de différentes manières et la lecture de la musique en continu.

1. Créer et configurer un nouveau projet

Étape 1

Créez un nouveau projet Android. Si vous utilisez Eclipse laisser l'IDE (Integrated Development Environment - Environnement de Développement Intégré) créer la classe principale Activity et les fichiers 'layout' automatiquement. Pour certaines parties du code de ce tutoriel vous aurez besoin au minimum de l'API 16, donc, au besoin, vous devrez prendre des mesures supplémentaires pour vous adapter aux anciennes versions. Une fois votre projet créé, ouvrez le fichier Manifest du projet. À l'intérieur du fichier Manifest, ajoutez l'autorisation suivante :

Nous utiliserons cette autorisation pour permettre de continuer la lecture de la musique quand que le téléphone de l'utilisateur se met en veille. Votre Manifest doit déjà contenir un élément pour votre classe d'activité principale : Activity. Ajoutez les attributs suivants à dans l'élément activity pour définir le screenOrientation et launchMode :

Nous garderons l'orientation de l'appareil en mode portrait pour plus de simplicité. Le launchMode aidera à la navigation, il permettra de revenir directement à l'application si l'utilisateur l'a quitté et ne lancera pas une nouvelle instance. Nous allons afficher une notification indiquant la chanson en cours de lecture, cliquer sur la notification va permettre à l'utilisateur de revenir à l'application. Nous allons également utiliser une classe Service pour la lecture de la musique. Ajoutez la ligne suivante au Manifest du projet à l'intérieur de l'élément application et après l'élément activity :

Modifier le nom du package pour vous adapter à vos propres modifications et changez le nom de la classe si vous le souhaitez.

Étape 2

Ouvrir le fichier de mise en page principale du projet (le main layout) et remplacez son contenu par ce code :

Fait en sorte de modifier l'attribut tools:context si votre classe Activity est nommée différemment du tutoriel. La layout comprend un ListView dans lequel nous allons présenter la liste des chansons.

Nous allons inclure deux éléments dans le menu, l'activation/désactivation de la fonction de lecture aléatoire et une fonction pour quitter l'application. Ouvrez votre fichier de menu principal (res/menu/main.xml) et remplacez son contenu par le texte suivant :

Si vous préférez, vous pouvez stocker les titres dans chansons dans le fichier res/values/strings.xml. Les deux éléments graphiques se référent aux fichiers 'drawable'. Créez vos propres images ou utiliser les deux images ci-dessous :

Android Music Player Random Button
Android Music Player End Button

Nous allons également utiliser une icône à afficher dans la barre de notification. Créez-en une ou utilisez celle ci-dessous :

Android Music Player Play Button

Le code fait référence à des images en utilisant les noms rand, end et play, assurez-vous que vous utilisez les mêmes noms de fichiers. Copiez les images de la dossier drawable de votre projet. Nous implémenterons les actions plus tard.

2. Recherchez les chansons sur le téléphone

Étape 1

Nous allons chercher les fichiers audio sur le téléphone de l'utilisateur. Tout d'abord, ajoutez une nouvelle classe à votre projet, en la nommant Song. Nous allons utiliser cette classe pour modéliser les données d'un fichier audio. À l'intérieur de la déclaration de classe, ajoutez trois variables d'instance pour les données que nous voulons stocker pour chaque piste :

Ajoutez ensuite une méthode constructeur dans lequel nous instancions les variables d'instance :

Enfin, ajoutez les méthodes get pour les variables d'instance :

Si vous envisagez d'utiliser plus d'informations sur les pistes audio, vous êtes libre d'ajouter des variables d'instance supplémentaires à la classe.

Étape 2

Ouvrez la class main Activity et ajoutez les importations suivantes :

Déclarez les variables d'instance suivantes avant la méthode onCreate :

Nous enregistrerons les chansons dans la liste (songList) et les afficherons dans l'instance ListView dans le layout principal. Dans la méthode onCreate, après le réglage de l'affichage du contenu, extrayez l'instance de ListView à l'aide de l'ID que nous lui avons donné dans le layout principal :

Instanciez la liste comme indiqué ci-dessous :

Ensuite, dans la déclaration de classe main Activity, après les méthodes existantes, créez une méthode d'assistance pour récupérer les informations de fichiers audio :

À l'intérieur de cette méthode, créez une instance  ContentResolver, récupérer l'URI des fichiers audio présents sur la mémoire et créer une instance Cursor à l'aide de l'instance ContentResolver pour obtenir des informations sur les fichiers audio :

Maintenant nous pouvons itérer une méthode sur les tous les résultats : tout d'abord vérifier que nous disposons de données valides :

Nous récupérons tout d'abord le noms des éléments des 'colonnes' des informations qui nous intéressent, pour toutes les chansons (ici l'artiste, le titre et l'ID de la chansons). Puis nous les utilisons pour créer un objet Song et ajoutons une musique à la liste. Nous itérons cette méthode sur les résultats.

Retour dans la méthode onCreate, après le code que nous avons ajouté, appelez cette nouvelle méthode :

3. Affichez les chansons

Étape 1

Nous pouvons maintenant afficher la liste des chansons dans l'interface utilisateur. Dans la méthode onCreate, après avoir appelé la méthode d'assistance (helper method), que nous venons de créer, nous allons trier les données afin que les chansons soient présentés par ordre alphabétique :

Nous utilisons la variable title dans la classe Song, en utilisant les méthodes get que nous avons ajouté, pour implémenter une méthode de comparaison compare, triant les chansons par titre.

Étape 2

Nous allons définir une mise en page pour représenter chaque chanson dans la liste. Ajoutez un nouveau fichier au dossier res/layout de votre projet, nommé le song.xml et en écrivez le code suivant :

N'hésitez pas à modifier la mise en page selon vos préférences. Chaque chanson dans la liste sera représentée par les chaînes de caractères du titre et de l'artiste, donc nous allons utiliser le TextViews pour afficher ces données. Notez que le LinearLayout contient une balise onClick. Nous allons utiliser cette méthode dans la classe d'activité principale main Activity pour jouer les chansons que l'utilisateur aura sélectionné en appuyant sur un élément de la liste de chanson.

Étape 3

Nous allons utiliser un Adapter pour référencer les chansons dans l'affichage de la liste. Ajoutez une nouvelle classe à votre application en la nommant SongAdapter ou bien avec le nom de votre choix. Lorsque vous créez la classe, ajoutez le android.widget.BaseAdapter de la superclasse. Eclipse devrait insérer les lignes suivantes :

Vous devrez ajouter les importations suivantes :

Dans la déclaration de classe, déclarez les variables d'instance suivantes :

Nous allons passer la liste de musique de la classe main Activity , en utilisant le LayoutInflater pour référencer le titre et l'artiste sous forme de chaines de caratères, dans le TextViews que nous avons créé précédemment dans le layout.

Après les variables d'instance, mettre dans l'adapter une méthode constructeur pour les instancier:

Modifier le contenu de la méthode getCount pour retourner la taille de la liste :

Vous pouvez laisser les méthodes getItem et getItemId telles-quelles. Modifier l'implémentation de la méthode getView comme suit :

Nous avons récupérer le bon titre de la musique ainsi que le bon artiste de l'instance Song de la liste de musique en utilisant l'index de position. Nous avons mis en place un tag de position qui lancera la bonne musique lorsque l'utilisateur cliquera sur un item de la liste. N'oubliez pas que le fichier de mise en page song.xml inclus un attribut onClick. Nous allons utiliser la méthode présentée ci-dessus pour récupérer le tag dans la classe Activity.

Étape 3

Retour dans la classe d'activité principale  main Activity, dans la méthode onCreate après le tri de la liste, créez une nouvelle instance de la classe Adapter et placez-le sur le ListView :

Lorsque vous exécutez l'application, elle doit afficher la liste des chansons sur le téléphone. Pour le moment le clique sur une chanson entraînera l'affichage d'un message d'erreur, mais nous mettrons en oeuvre le gestionnaire click dans le prochain tutoriel.

Conclusion

Nous avons désormais configuré l'application pour qu'elle puisse lire les chansons présentent sur le téléphone de l'utilisateur. Dans la prochaine partie, nous allons commencer la lecture lorsque l'utilisateur sélectionne une chanson à l'aide de la classe MediaPlayer. Nous implémenterons la lecture à l'aide d'une classe  Service afin que la lecture continue lorsque l'utilisateur interagit avec d'autres applications. Enfin, nous allons utiliser une classe MediaController pour donner à l'utilisateur un contrôle sur la lecture.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.