我正在尝试为我的一个学校项目创建一个音乐应用。因此,它要求该应用程序能够读取手机的存储,然后显示它。
到目前为止,我已经能够通过使用MediaStore(底部的代码)读取歌曲及其数据的存储。从那里,我将所需的数据存储到Song
类中,如下所示:
Song(String _songName, String _songArtist, String _songAlbum, String _songUri, String _coverArt).
将数据存储到类中之后,然后将其存储到ArrayList
中。
因此,我能够读取数据并存储。但是从那里,我不太确定如何从存储它的列表中显示它。
private void loadSongs() {
Uri audioUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor audioCursor = getContentResolver().query(audioUri, null, null, null, null);
if(audioCursor != null) {
if(audioCursor.moveToFirst()) {
do {
String songName = audioCursor.getString(audioCursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
String songArtist = audioCursor.getString(audioCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
String songAlbum = audioCursor.getString(audioCursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));
String songUri = audioCursor.getString(audioCursor.getColumnIndex(MediaStore.Audio.Media.DATA));
Song newSong = new Song(songName, songArtist, songAlbum, songUri, null);
loadedSong.add(newSong);
} while(audioCursor.moveToNext());
}
audioCursor.close();
}
}
private void loadPictures() {
Uri imageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
Cursor imageCursor = getContentResolver().query(imageUri, null, null, null, null);
if(imageCursor != null) {
if(imageCursor.moveToFirst()) {
do {
String pictureAlbum = imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.TITLE));
String pictureUri = imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.DATA));
CoverArt newCoverArt = new CoverArt(pictureAlbum, pictureUri);
loadedCoverArt.add(newCoverArt);
} while(imageCursor.moveToNext());
}
imageCursor.close();
}
}
private void arrangeCoverArt() {
for(int audioStart = 0; audioStart < (loadedSong.size() - 1); audioStart++) {
Song currentSong = loadedSong.get(audioStart);
String audioUri = currentSong.getSongUri();
String[] arrayAudioUri = audioUri.split("/");
for(int coverStart = 0; coverStart < (loadedCoverArt.size() - 1); coverStart++) {
CoverArt currentCover = loadedCoverArt.get(coverStart);
String coverUri = currentCover.getCoverArtUri();
String[] arrayCoverUri = coverUri.split("/");
if(arrayAudioUri[(arrayAudioUri.length - 2)].equals(arrayCoverUri[(arrayCoverUri.length - 2)])) {
currentSong.setCoverArt(currentCover.getCoverArtUri());
displayedData.add(currentSong.getSongName() + "\n" + currentSong.getSongArtist() + "\n" + currentSong.getSongAlbum() + "\n" + currentSong.getCoverArt());
break;
}
}
}
}
我要如何显示歌曲:
答案 0 :(得分:0)
有多种方法可以解决此问题,这实际上取决于您要解决的问题。例如,如果您希望将它们全部显示在一个位置,则可以使用ListView
或一次只显示一种音乐(例如Spotify),则应考虑设计和实现一个独立视图,将这些变量用作参数并将其显示给用户。