Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] Développement Music Player

Quelques questions

Sujet résolu
    4 mai 2012 à 12:55:05

    Bonjour à tous,
    J'ai plusieurs questions à vous poser ^^
    Je suis en train de développer un lecteur de musique mais j'ai plusieurs problemes
    Tout d'abord que me conseillerai vous pour stocker la listes des fichiers musicaux?
    J'ai crée moi-meme une fonction pour lister tout les fichiers musicaux dans la carte sd parce que je n'ai pas trouvé de fonction deja faite. Pour le moment j'ai stocké ça dans une base de données, mais l'acces en lecture et trop long dès que l'on veux mettre ça dans une listeview...
    Un de mes autres problèmes est que je n'ai pas trouvé comment faire pour lancer une autre musique lorsque la musique en cours est terminé
    Et sinon qu'utiliser vous pour lire les id3tags contenu dans le fichier? Je ne sais pas quoi utiliser
    Voili voulou,
    je vous remercie d'avance pour vos reponses :)
    • Partager sur Facebook
    • Partager sur Twitter
      4 mai 2012 à 14:52:03

      Bonjour,

      Pour les tags ID3: http://developer.android.com/reference [...] etriever.html

      Pour enchainer les morceaux, tu as le OnCompletionListener.

      Pour la playlist, une ArrayList en mémoire. Tu peux garder la BdD pour la stocker entre deux lancements de l'application (ou passer par du XML).

      Désolé pour cette réponse un peu courte mais je n'ai pas beaucoup de temps pour poster.
      • Partager sur Facebook
      • Partager sur Twitter
        4 mai 2012 à 16:10:24

        D'accord merci :)
        Je vais tester tout ça, je reviendrais poster au cas ou :)
        Quand tu dis passer par du xml que veux tu dire?
        • Partager sur Facebook
        • Partager sur Twitter
          4 mai 2012 à 18:43:14

          Oublie ma remarque sur la persistance de la playlist.

          Ce que je voulais dire c'est que tu peux également la sérialiser dans un fichier XML.
          Un truc du genre:
          <playlist>
              <track>
                  <title>Sunday Bloody Sunday</title>
                  <file>sunday.mp3</file>
              </track>
              <track>
                  <title>Summer Son</title>
                  <file>summer.mp3</file>
              </track>
          </playlist>
          


          Mais bon, tout dépend de ce que tu veux en faire et ce qu'elle contient: est-ce tous les morceaux détectés sur la carte SD ou une sélection faite par l'utilisateur. Est-ce qu'elle doit subsister entre deux lancements de ton application?
          • Partager sur Facebook
          • Partager sur Twitter
            5 mai 2012 à 10:05:14

            Elle contiendrait tout les fichiers presents sur la sd, ou la playlist en cours :)
            As-tu un lien pour le xml ?
            Par contre je n'arrive pas a implementer la methode OnCompletionListener, et je ne trouve pas d'exemple de code commenté meme en anglais...
            • Partager sur Facebook
            • Partager sur Twitter
              5 mai 2012 à 10:23:34

              Salut,

              Pour ce qui est un onCompletionListener:

              // Tu déclares et initialises ton MediaPlayer puis:
              mediaPlayer.start();
              mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
                  @Override
                      public void onCompletion(MediaPlayer mp) {
                          // Le code pour passer à la piste suivante de la playlist
                      }
              });
              


              Le XML était juste un exemple, tu peut très bien sérialiser ta playlist dans un fichier texte.

              Regarde un peu du côté des ContentProvider et du stockage en général .
              • Partager sur Facebook
              • Partager sur Twitter
                5 mai 2012 à 10:30:44

                ce que j'ai mis dans mon onCreate
                mMediaPlayer.setOnCompletionListener(new OnCompletionListener() {
                            public void onCompletion(MediaPlayer mp) {
                                // TODO Auto-generated method stub
                        		if(mMediaPlayer!=null){
                        			lectureEnCours ++;
                        			HashMap<String, String> map = (HashMap<String, String>) maListViewPerso.getItemAtPosition(lectureEnCours);
                        			mMediaPlayer = new MediaPlayer();
                                	try {
                        				mMediaPlayer.setDataSource("file://" + map.get("titre"));
                        	        	mMediaPlayer.prepare();
                        				mMediaPlayer.start();
                                	} catch (IllegalArgumentException e) {
                        				// TODO Auto-generated catch block
                        				e.printStackTrace();
                        			} catch (SecurityException e) {
                        				// TODO Auto-generated catch block
                        				e.printStackTrace();
                        			} catch (IllegalStateException e) {
                        				// TODO Auto-generated catch block
                        				e.printStackTrace();
                        			} catch (IOException e) {
                        				// TODO Auto-generated catch block
                        				e.printStackTrace();
                        			}
                
                        		}
                            }
                        });
                

                Voici mon code mais malheureusement je ne comprends pas pourquoi il ne marche pas :(
                La lecture se fait mais a la fin il ne lit pas le fichier que je lui ai indiqué
                • Partager sur Facebook
                • Partager sur Twitter
                  5 mai 2012 à 10:43:56

                  Pourquoi tu recrées un MediaPlayer à chaque fois? Tout ce dont tu as besoin, c'est de passer à la chanson suivante.
                  Un petite explication: http://www.helloandroid.com/tutorials/ [...] player-part-i
                  • Partager sur Facebook
                  • Partager sur Twitter
                    5 mai 2012 à 11:42:13

                    Merci beaucoup pour ton site :) Il m'a bien aidé ^^
                    En faite j'avais juste mis ma methode au mauvaise endroit ^^
                    Sinon j'ai une autre question,
                    J'ai une seekBar, en fonction de la position ou je la place elle met la lecture de la chanson au temps demandé. Mais je n'arrive pas a la faire avancé en fonction de la lecture , sais-tu comment faire?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      5 mai 2012 à 12:10:29

                      Il faut créer un OnSeekBarChangeListener :
                      private OnSeekBarChangeListener progressBarChangeListener = new OnSeekBarChangeListener() {
                          @Override
                          public void onStopTrackingTouch(SeekBar seekBar) {
                              if(seekBar == progressBarSong) {
                                  int duration = mediaPlayer.getDuration();
                                  int value = (seekBar.getProgress() * duration) / 100;
                                  mediaPlayer.seekTo(value);
                              }
                          }
                      };
                      


                      Puis l'associer à ta SeekBar:
                      progressBarSong.setOnSeekBarChangeListener(progressBarChangeListener);
                      
                      • Partager sur Facebook
                      • Partager sur Twitter
                        5 mai 2012 à 12:41:07

                        Oui, j'ai deja utilisé ces methodes pour quand l'utilisateur touche la seekbar comme tu me l'as montré ^^
                        J'ai du mal m'expliquer :/
                        Ce que j'aimerais savoir, c'est comment mettre a jour la position de la seekbar en fonction de l'avancement de la musique?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          5 mai 2012 à 13:09:04

                          Regarde par là: http://www.androidhive.info/2012/03/an [...] yer-tutorial/

                          Désolé de ne pas être plus précis mais je ne sais plus où j'ai mis un ancien projet de player.

                          J'espère que ça répondra à ta question.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            5 mai 2012 à 13:25:29

                            C'est pas grave, je vais regarder ton lien :)
                            Tu m'aide deja beaucoup tu sais ^^
                            • Partager sur Facebook
                            • Partager sur Twitter

                            [Android] Développement Music Player

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown