如何从设备的内部和外部存储器中获取songart(AlbumArt)?
问题描述:
我正在尝试制作音乐播放器应用程序。如何从设备的内部和外部存储器中获取songart(AlbumArt)?
我想要一个带有歌曲图像和歌名和歌手名字的列表视图。
就是这样。
我已经想通了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;}
}
我只是想,如果有任何的方式来各自songart获取他们的歌。
答
与下面的代码试图让松艺:
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));
}
如果我还因为它存储的歌曲信息编辑宋级。 –
是的,你需要改变你的bean类作为一个新的参数添加。 – Gaurav
嘿对不起,但我是这个东西的初学者,你能否完全写出内容解析器和宋课的代码,就像我在我的问题中写的一样,如果你有时间的话。 –