【问题标题】:How to list all music in MediaStore without app songs如何在没有应用歌曲的情况下列出 MediaStore 中的所有音乐
【发布时间】:2015-12-15 09:38:59
【问题描述】:

我使用此代码获取 MediaStore 中的所有音乐,但不仅是音乐,我的列表包含设备中的所有音乐和应用程序的声音,如“facebook”或“skype”。如何避免?

public void getSongList(){
    //query external audio
    ContentResolver musicResolver = getContentResolver();
    Uri musicUri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    Toast.makeText(PlayListActivity.this, musicUri.getPath(), Toast.LENGTH_LONG).show();
    Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null);
    //iterate over results if valid
    if(musicCursor!=null && musicCursor.moveToFirst()){
        //get columns
        int titleColumn = musicCursor.getColumnIndex
                (android.provider.MediaStore.Audio.Media.TITLE);
        int idColumn = musicCursor.getColumnIndex
                (android.provider.MediaStore.Audio.Media._ID);
        int artistColumn = musicCursor.getColumnIndex
                (android.provider.MediaStore.Audio.Media.ARTIST);
        int albumColumn = musicCursor.getColumnIndex
                (android.provider.MediaStore.Audio.Media.ALBUM_ID);
        //add songs to list
        Bitmap bmThumbnail;
        do {
            String path = musicCursor.getString(musicCursor.getColumnIndex(MediaStore.Audio.Media.DATA));
            long thisId = musicCursor.getLong(idColumn);
            long thisAlbumId = musicCursor.getLong(albumColumn);
            String thisTitle = musicCursor.getString(titleColumn);
            String thisArtist = musicCursor.getString(artistColumn);
            songList.add(new Song(thisId, thisAlbumId, thisTitle, thisArtist, path));
        }
        while (musicCursor.moveToNext());
    }
}

【问题讨论】:

    标签: android audio-player mpmusicplayercontroller audio android-music-player


    【解决方案1】:

    对此我不确定,但我是通过以下方式做到的。

    public void getSongList(){
    //query external audio
    ContentResolver musicResolver = getContentResolver();
    Uri musicUri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    Toast.makeText(PlayListActivity.this, musicUri.getPath(), Toast.LENGTH_LONG).show();
    Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null);
    //iterate over results if valid
    if(musicCursor!=null && musicCursor.moveToFirst()){
        //get columns
        int titleColumn = musicCursor.getColumnIndex
                (android.provider.MediaStore.Audio.Media.TITLE);
        int idColumn = musicCursor.getColumnIndex
                (android.provider.MediaStore.Audio.Media._ID);
        int artistColumn = musicCursor.getColumnIndex
                (android.provider.MediaStore.Audio.Media.ARTIST);
        int albumColumn = musicCursor.getColumnIndex
                (android.provider.MediaStore.Audio.Media.ALBUM_ID);
        int songDuration  = musicCursor.getColumnIndex(android.provider.MediaStore.Audio.Media.DUration);
        //add songs to list
        Bitmap bmThumbnail;
        do {
            String path = musicCursor.getString(musicCursor.getColumnIndex(MediaStore.Audio.Media.DATA));
            long thisId = musicCursor.getLong(idColumn);
            long thisAlbumId = musicCursor.getLong(albumColumn);
            String thisTitle = musicCursor.getString(titleColumn);
            String thisArtist = musicCursor.getString(artistColumn);
            int dur  =       Integer.parseInt(musicCursor.getString(songDuration));
            if(dur>5000){
            songList.add(new Song(thisId, thisAlbumId, thisTitle, thisArtist, path));}
            }
             while (musicCursor.moveToNext());
        }
    }
    

    另一种方法可能是使用目录?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-05
      • 2018-10-05
      • 1970-01-01
      • 2021-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多