List All Mp3 files in android

前端 未结 4 924
日久生厌
日久生厌 2021-02-03 16:28

I am developing music player in android but stuck in reading MP3 files. here is my code to read all mp3 files. but its not returing any files from device(although there are some

4条回答
  •  时光说笑
    2021-02-03 16:53

    Hope you already found your answer but may be this is better and if you wants to try, Here is your solution use the following code to Read the MP3 file from the Specific Folder or All files,

    First of all Create 1 Model class as Given Below, to GET and SET Files in list.

    AudioModel.class

    public class AudioModel {
    
        String aPath;
        String aName;
        String aAlbum;
        String aArtist;
    
        public String getaPath() {
            return aPath;
        }
    
        public void setaPath(String aPath) {
            this.aPath = aPath;
        }
    
        public String getaName() {
            return aName;
        }
    
        public void setaName(String aName) {
            this.aName = aName;
        }
    
        public String getaAlbum() {
            return aAlbum;
        }
    
        public void setaAlbum(String aAlbum) {
            this.aAlbum = aAlbum;
        }
    
        public String getaArtist() {
            return aArtist;
        }
    
        public void setaArtist(String aArtist) {
            this.aArtist = aArtist;
        }
    }
    

    Now We have our Model Class, use the below code to Read the all MP3 files from your Folder or device.

    This will return list of all MP3 Files with Music NAME, PATH, ARTIST, ALBUM. if you want more details, please refer the documentation for Media.Store.Audio

    public List getAllAudioFromDevice(final Context context) {
    
            final List tempAudioList = new ArrayList<>();
    
            Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
            String[] projection = {MediaStore.Audio.AudioColumns.DATA, MediaStore.Audio.AudioColumns.ALBUM, MediaStore.Audio.ArtistColumns.ARTIST,};
            Cursor c = context.getContentResolver().query(uri, projection, MediaStore.Audio.Media.DATA + " like ? ", new String[]{"%yourFolderName%"}, null);
    
            if (c != null) {
                while (c.moveToNext()) {
    
                    AudioModel audioModel = new AudioModel();
                    String path = c.getString(0);
                    String album = c.getString(1);
                    String artist = c.getString(2);
    
                    String name = path.substring(path.lastIndexOf("/") + 1);
    
                    audioModel.setaName(name);
                    audioModel.setaAlbum(album);
                    audioModel.setaArtist(artist);
                    audioModel.setaPath(path);
    
                    Log.e("Name :" + name, " Album :" + album);
                    Log.e("Path :" + path, " Artist :" + artist);
    
                    tempAudioList.add(audioModel);
                }
                c.close();
            }
    
            return tempAudioList;
        }
    

    To read the files of a specific folder, use this query (write the target folder name in the query)

    Cursor c = context.getContentResolver().query(uri,
                                              projection, 
                                              MediaStore.Audio.Media.DATA + " like ? ", 
                                              new String[]{"%yourFolderName%"}, // yourFolderName 
                                              null);
    

    If you want all the files on the device, use this query:

    Cursor c = context.getContentResolver().query(uri,
                                              projection, 
                                              null, 
                                              null, 
                                              null);
    

    Don't forget to add the storage permission.

提交回复
热议问题