Aller au contenu

HOW TO : Construire une liste de fichiers musicaux ???


Invité

Recommended Posts

Salut tout le monde !

Dans mon appli, je voudrais donner la possibilité aux utilisateurs de choisir une musique parmi celles présentes sur leur terminal.

Ma première version scanne les répertoires suivants:

/sdcard/ringtones

/sdcard/music

/sdcard/alarms

/sdcard/notifications

/sdcard

        
Environment.getExternalStorageDirectory()+"/ringtones/",
Environment.getExternalStorageDirectory()+"/music/",
Environment.getExternalStorageDirectory()+"/alarms/",
Environment.getExternalStorageDirectory()+"/notifications/",
Environment.getExternalStorageDirectory()+"/"

Ca marche bien pour mon HTC Magic 1.6, mais... pas pour tout le monde.

Du coup, j'ai essayé de faire une fonction récurvise (digne de la théorie de la programmation Java), en partant du répertoire "/" ...

Mais là, CATA : ça boucle sur des répertoires system (power.0), proc, etc.....

Est-ce que que quelqu'un aurais une méthode (pas forcément le code, je peux faire), pour me permettre de construire cette FOU£µ%£%£% liste ? :-)

Merci d'avance pour votre aide !!!!

Nek

Lien vers le commentaire
Partager sur d’autres sites

Trouvé grâce à ce post : https://forum.frandroid.com/forum/viewtopic.php?id=8350

String[] proj = { 
         MediaStore.Audio.Media._ID, 
         MediaStore.Audio.Media.DATA, 
         MediaStore.Audio.Media.ARTIST, 
         MediaStore.Audio.Media.TITLE, 
         MediaStore.Audio.Media.DURATION
  };

this.musicCursor = this.managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, proj, null, null, null);

if(this.musicCursor!=null){
         this.musicCount = musicCursor.getCount();
    } else {
         //No music found
} 


for (int i = 0; i < musicCount; i++) {
       musicCursor.moveToPosition(i);
       //Pour récupérer le fichier et son emplacement (pour le MediaPlayer)
       //musicCursor.getString(musicCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA))
       //Pour récupérer le titre
       //musicCursor.getString(musicCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE))
       // ... et tous les autres
}

Ca peut servir à d'autres !

A+

Lien vers le commentaire
Partager sur d’autres sites

c'est normal que ca boucle

n'oublions par qu'android cache un peu de linux. Scaner recursivement depuis la racine c'ets dont suicidaire car il y'a plein de lien symboliques qui peuvent te faire boucler à l'infini.

tu peu garder ton idée pour scanner mais uniquement certains repertoir comm "/sdcard/" et d'eviter de suivre d'eventuels lien symboliques.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...