我正在尝试制作一个音乐播放器应用程序。
我想要一个列表视图与歌曲的图像和歌名和艺术家的名字。
就像这样。

我已经用内容解析器弄清楚了songName和songTitle,但我不知道如何显示这首歌各自的艺术。
这是我的ListSong.java,用来从设备上获取歌曲。
public class ListSong extends Fragment {
private ArrayList<Song> songList;
private ListView songView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.listsongs, container, false);
songView = (ListView)rootView.findViewById(R.id.songsList);
songList = new ArrayList<Song>();
getSongList();
SongAdapter songAdt = new SongAdapter(getActivity(), songList);
songView.setAdapter(songAdt);
return rootView;
}
public void getSongList(){
ContentResolver musicResolver = getActivity().getContentResolver();
Uri musicUri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null);
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);
//add songs to list
do {
long thisId = musicCursor.getLong(idColumn);
String thisTitle = musicCursor.getString(titleColumn);
String thisArtist = musicCursor.getString(artistColumn);
songList.add(new Song(thisId, thisTitle, thisArtist));
}
while (musicCursor.moveToNext());
}
}
}这里是我的SongInfo(Song.java)类
public class Song {
private long id;
private String title;
private String artist;
public Song(long songID, String songTitle, String songArtist) {
this.id = songID;
this.title = songTitle;
this.artist = songArtist;
}
public long getID(){return id;}
public String getTitle(){return title;}
public String getArtist(){return artist;}
}我只是想知道,有没有什么方法可以把各自的歌曲艺术带到他们的歌曲中。
发布于 2017-10-18 19:20:50
尝试使用以下代码获取Song Art:
ContentResolver musicResolver = getContentResolver();
Uri musicUri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null);
int albumIDColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID);
long thisAlbumID = musicCursor.getLong(albumIDColumn);
Cursor cursor = musicResolver.query(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
new String[]{MediaStore.Audio.Albums._ID, MediaStore.Audio.Albums.ALBUM_ART},
MediaStore.Audio.Albums._ID + "=?",
new String[]{String.valueOf(thisAlbumID)},
null);
String imagePath = "";
if (cursor.moveToFirst()) {
imagePath = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Albums.ALBUM_ART));
}https://stackoverflow.com/questions/46808319
复制相似问题