Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

List all music in MediaStore with the PATHs

Ok so I've been working on this project for a few days now and most of my time has been working out how to list all the music on a device in a LIST VIEW or something else, I have searched for a few days now and this is killing me. I did get so close at one point with all the music in one folder showing, though since most people will have sub folders for things like artiest and albums I need a way to search sub folders for MP3s or music files.

Here is what I have so far for Music collection:

package com.androidhive.musicplayer;  import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; import java.util.HashMap;  import android.provider.MediaStore;  public class SongsManager { // SDCard Path final String MEDIA_PATH = new String(MediaStore.Audio.Media.getContentUri("external").toString()); private ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();  // Constructor public SongsManager(){  }  /**  * Function to read all mp3 files from sdcard  * and store the details in ArrayList  * */ public ArrayList<HashMap<String, String>> getPlayList(){     File home = new File(MEDIA_PATH);      if (home.listFiles(new FileExtensionFilter()).length > 0) {         for (File file : home.listFiles(new FileExtensionFilter())) {             HashMap<String, String> song = new HashMap<String, String>();             song.put("songTitle", file.getName().substring(0, (file.getName().length() - 4)));             song.put("songPath", file.getPath());              // Adding each song to SongList             songsList.add(song);         }     }     // return songs list array     return songsList; }  /**  * Class to filter files which are having .mp3 extension  * */ class FileExtensionFilter implements FilenameFilter {     public boolean accept(File dir, String name) {         return (name.endsWith(".mp3") || name.endsWith(".MP3"));     } }  } 

Thanks to anyone who can help. :)

like image 738
user1853951 Avatar asked Nov 26 '12 16:11

user1853951


1 Answers

Although, the post is old, for other people like me to get the idea of creating a list of music with their file path, I added the solution here. MediaStore.Audio.Media.DATA column actually contains media file path. You can get necessary information by using the following snippet:

ContentResolver cr = getActivity().getContentResolver();  Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; String selection = MediaStore.Audio.Media.IS_MUSIC + "!= 0"; String sortOrder = MediaStore.Audio.Media.TITLE + " ASC"; Cursor cur = cr.query(uri, null, selection, null, sortOrder); int count = 0;  if(cur != null) {     count = cur.getCount();      if(count > 0)     {         while(cur.moveToNext())         {             String data = cur.getString(cur.getColumnIndex(MediaStore.Audio.Media.DATA));             // Add code to get more column here              // Save to your list here         }      }      cur.close(); } 
like image 177
MARK002-MAB Avatar answered Sep 28 '22 05:09

MARK002-MAB