【问题标题】:How can i load song album art to an ImageView with Picasso?如何使用 Picasso 将歌曲专辑封面加载到 ImageView?
【发布时间】:2017-12-04 00:17:30
【问题描述】:
public void getSongs() {

    Uri songUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    String selection = MediaStore.Audio.Media.IS_MUSIC + "!=0";
    Cursor myCursor = getContentResolver().query(songUri, null, selection, null, null);


    if (myCursor != null && myCursor.moveToFirst()) {
        int id_Column = myCursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID);
        int data_Column = myCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);
        int title_Column = myCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE);
        int artist_Column = myCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST);
        int album_Column = myCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID);
        do {

            Long songId = myCursor.getLong(id_Column);
            String songData = myCursor.getString(data_Column);
            String songName = myCursor.getString(title_Column);
            String songArtist = myCursor.getString(artist_Column);
            String songAlbum  = myCursor.getString(album_Column);

            long parseLong = Long.parseLong(songAlbum);
            final Uri sArtWorkUri =  Uri.parse("content://media/external/audio/albumart");

            Uri uri = ContentUris.withAppendedId(sArtWorkUri, parseLong);

            Picasso.with(this).load(uri).into(albumArt);

            QuerySongs querySongs = new QuerySongs(songId, songData, songName, songArtist);
            songList.add(querySongs);

        } while (myCursor.moveToNext());
        myCursor.close();
    }
}

如何将专辑封面加载到 imageView?在我的 getSongs 方法中,我尝试了 Picasso,但没有加载艺术作品。

我该如何解决这个问题?

谢谢, -文斯

【问题讨论】:

  • 毕加索.with(this).load(uri).into(albumArt);我知道我在这里遗漏了一些东西,但我不知道是什么。

标签: android picasso albumart


【解决方案1】:

您需要从 Uri 创建一个文件对象,如下所示:

...

long parseLong = Long.parseLong(songAlbum);
        final Uri sArtWorkUri =  
Uri.parse("content://media/external/audio/albumart");

Uri uri = ContentUris.withAppendedId(sArtWorkUri, parseLong);

File file = new File(uri.getPath());
Picasso.with(getContext())
        .load(file)  
        .error(R.drawable.mountain) 
        .into(albumArt);

【讨论】:

  • 文件 file = new File(uri);这是一个错误,上面写着“无法解析构造函数'File(android.net.Uri)'
  • 你需要这样做:File file = new File(uri.getPath());,我会编辑答案
  • 好的,现在它不再崩溃了,但我不显示专辑封面,只有没有专辑封面时的艺术。
  • 我想从我的 SD 卡中读取的歌曲中获取专辑封面。
  • 获取封面的 URI 引用并应用相同的逻辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-27
  • 2016-09-26
相关资源
最近更新 更多