首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从设备的内部和外部存储器中获取songart (AlbumArt)?

如何从设备的内部和外部存储器中获取songart (AlbumArt)?
EN

Stack Overflow用户
提问于 2017-10-18 18:43:13
回答 1查看 317关注 0票数 0

我正在尝试制作一个音乐播放器应用程序。

我想要一个列表视图与歌曲的图像和歌名和艺术家的名字。

就像这样。

我已经用内容解析器弄清楚了songName和songTitle,但我不知道如何显示这首歌各自的艺术。

这是我的ListSong.java,用来从设备上获取歌曲。

代码语言:javascript
复制
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)类

代码语言:javascript
复制
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;}

}

我只是想知道,有没有什么方法可以把各自的歌曲艺术带到他们的歌曲中。

EN

回答 1

Stack Overflow用户

发布于 2017-10-18 19:20:50

尝试使用以下代码获取Song Art:

代码语言:javascript
复制
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));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46808319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档