我在自定义媒体播放器应用程序,必须从SD卡和内部存储加载歌曲。我到处寻找从内部存储中加载歌曲的方法,我查看的大多数帖子都是使用Environment.getExternalStorageDirectory()
加载单个MP3文件,而不是多个。我可以从SD卡(存储卡)加载所有歌曲,但不能从内部存储加载。有没有办法加载存储在内部存储器中的所有歌曲?
我的代码,
private void loadSongs() {
Uri uri = MediaStore.Audio.Media.INTERNAL_CONTENT_URI;
Uri uriPath;
String MEDIA_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/";
String selection = MediaStore.Audio.Media.IS_MUSIC + "!=0";
Cursor cursor = getContentResolver().query(uri, null, selection, null, null);
if (cursor != null) {
if (cursor.moveToFirst()) {
do {
String name = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));
String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
String url = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
Log.i("DATA111", MEDIA_PATH);
mediaMetadataRetrieve = new MediaMetadataRetriever();
mediaMetadataRetrieve.setDataSource(MEDIA_PATH + "/Music/");
art = mediaMetadataRetrieve.getEmbeddedPicture();
if (art != null) {
songImage = BitmapFactory.decodeByteArray(art, 0, art.length);
}
SongInfo s = new SongInfo(name, artist, url, songImage);
_songs.add(s);
} while (cursor.moveToNext());
}
cursor.close();
songAdapter = new SongAdapter(MainActivity.this, _songs);
}
}
在这里你可以看到我使用的是MEDIA_PATH
,这是一个字符串类型的变量,其中Environment.getExternalStorageDirectory()
用于加载多首歌曲,但我得到的只是IllegalArgumentException
错误(是的,我可以清楚地看到我得到的是IllegalArgumentException
,这意味着路径有问题,我试图修复它,但我无法这样做)。
谁能告诉我一种方法来加载所有的歌曲从内部存储在我的自定义媒体播放器?顺便说一句,如果我错了,请纠正我
https://stackoverflow.com/questions/50698558
复制相似问题