如何只选择在android中以mp3结尾的文件?

时间:2017-04-11 21:50:54

标签: android android-contentprovider mediastore

如何只选择以mp3结尾的文件?

Screenshot here

2 个答案:

答案 0 :(得分:0)

你可以获得显示名称并检查它是否是mp3文件。还有另一个选项musicCursor.getString(musicCursor.getColumnIndex(MediaStore.Audio.Media.MIME_TYPE));,您可以使用mime类型方法,但它会为您提供类似“audio / mpeg”的字符串,用于mp3文件。

 public void getSongList(){
            ContentResolver musicResolver = getContentResolver();
            Uri musicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
            Cursor musicCursor = musicResolver.query(musicUri,null,null,null,null);

            if (musicCursor != null && musicCursor.moveToFirst()){
                int titleColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.TITLE);
                int idColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media._ID);
                int artistColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);
                do {
                    long thisId = musicCursor.getLong(idColumn);
                    String thisTitle = musicCursor.getString(titleColumn);
                    String thistArtist = musicCursor.getString(artistColumn);

                    String displayName = musicCursor.getString(musicCursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));
                    String ext = displayName.substring(displayName.lastIndexOf(".")+1);
                    if (ext.equals("mp3")){
                        //here you can add your mp3 file to songList
                        songList.add(new Song(thisId,thisTitle,thistArtist));
                    }
                }
                while (musicCursor.moveToNext());
            }

答案 1 :(得分:0)

要在列表中仅获取“ .mp3”文件,请尝试以下代码。

public List<AudioModel> getAllAudioFromDevice(final Context context) {

    final List<AudioModel> tempAudioList = new ArrayList<>();

    String Type_ = MediaStore.Files.FileColumns.MIME_TYPE + "=?";

    String mp3 = MimeTypeMap.getSingleton().getMimeTypeFromExtension("mp3");


    String[] Arguments = new String[]{mp3};

    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);
    Cursor c = context.getContentResolver().query(uri, projection, Type_, Arguments, 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;
}

音频模型:

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;
        }
    }