Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android按播放列表显示歌曲_Java_Android_Playlist_Audio Player_Android Music Player - Fatal编程技术网

Java Android按播放列表显示歌曲

Java Android按播放列表显示歌曲,java,android,playlist,audio-player,android-music-player,Java,Android,Playlist,Audio Player,Android Music Player,我正在尝试显示播放列表中的歌曲列表。我能够得到一个歌曲列表,但是当我播放它时,它不起作用 似乎它没有得到正确的MediaStore.Audio.Media.\u ID 以下是我如何显示列表的代码: private ArrayList<Song> listAllSongsByPlaylistId(long playlistId){ Cursor cursor; ArrayList<Song> songList = new ArrayList<Song&

我正在尝试显示播放列表中的歌曲列表。我能够得到一个歌曲列表,但是当我播放它时,它不起作用

似乎它没有得到正确的
MediaStore.Audio.Media.\u ID

以下是我如何显示列表的代码:

private ArrayList<Song> listAllSongsByPlaylistId(long playlistId){
    Cursor cursor;
    ArrayList<Song> songList = new ArrayList<Song>();
    ContentResolver musicResolver = getActivity().getContentResolver();

    Uri allSongsUri = MediaStore.Audio.Playlists.Members.getContentUri("external", playlistId);
    String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";
    if (isSdPresent()) {
        cursor = musicResolver.query(allSongsUri, null, null, null, null);
        if (cursor != null) {
            if (cursor.moveToFirst()) {
                do {
                    //Log.d("KO Genres:",cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Genres.NAME))+":"+genres);
                    Song song = new Song();

                    String data = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));
                    String[] res = data.split("\\.");
                    song.setSongName(res[0]);
                    song.setSongFullPath(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA)));
                    song.setSongId(cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media._ID)));
                    song.setSongAlbumName(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM)));
                    song.setArtist(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)));
                    song.setSongUri(ContentUris.withAppendedId(
                            android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                            cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media._ID))));
                    String duration = String.valueOf(getDuration(cursor.getLong(cursor.getColumnIndex(android.provider.MediaStore.Audio.Media.DURATION))));
                    song.setSongDuration(duration);

                    songList.add(song);

                } while (cursor.moveToNext());

                return songList;
            }
            cursor.close();
        }
    }
    return null;
}

你能把原木加进去吗?是的,当然。除媒体ID外,其他所有内容均相同。显示所有列表显示ID为115,而播放列表ID显示为6。这就是URI的外观content://media/external/audio/media/6
private ArrayList<Song> listAllSongs() { //Fetch path to all the files from internal & external storage n store it in songList
    Cursor cursor;
    ArrayList<Song> songList = new ArrayList<Song>();
    ContentResolver musicResolver = getActivity().getContentResolver();

    Uri allSongsUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";
    if (isSdPresent()) {
        cursor = musicResolver.query(allSongsUri, null, null, null, null);
        if (cursor != null) {
            if (cursor.moveToFirst()) {
                do {
                    Song song = new Song();

                    String data = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));
                    String[] res = data.split("\\.");
                    song.setSongName(res[0]);
                    song.setSongFullPath(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA)));
                    song.setSongId(cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media._ID)));
                    song.setSongAlbumName(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM)));
                    song.setArtist(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)));
                    song.setSongUri(ContentUris.withAppendedId(
                            android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                            cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media._ID))));
                    String duration = String.valueOf(getDuration(cursor.getLong(cursor.getColumnIndex(android.provider.MediaStore.Audio.Media.DURATION))));
                    song.setSongDuration(duration);
                    songList.add(song);
                } while (cursor.moveToNext());
                return songList;
            }
            cursor.close();
        }
    }
    return null;
}