Я читаю песни следующим образом:
private void getMusic() {
ContentResolver contentResolver = Objects.requireNonNull(getActivity()).getContentResolver();
Uri musicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor musicCursor = contentResolver.query(musicUri, null, null, null, null);
if (musicCursor != null && musicCursor.moveToFirst()) {
int musicTitleColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.TITLE);
int musicArtistColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);
int musicPathColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.DATA);
mList = new ArrayList<>();
do {
String musicTitle = musicCursor.getString(musicTitleColumn);
String musicArtist = musicCursor.getString(musicArtistColumn);
String musicPath = musicCursor.getString(musicPathColumn);
mList.add(new MusicData(musicTitle, musicArtist, musicPath, R.drawable.image));
} while (musicCursor.moveToNext());
}
}
в приведенном выше коде я использовал MediaStore.Audio.Media.DATA для извлечения пути песни. Но он не работает с MediaPlayer.
Я использую MediaPlayer следующим образом:
String path = songData.getMusicPath();
MediaPlayer player = MediaPlayer.create(getActivity(), Uri.parse(path));
if (player != null) {
player.start();
} else {
Toast.makeText(getContext(), path, Toast.LENGTH_SHORT).show();
}