如何使用Picasso从.mp3文件中检索专辑封面

时间:2018-05-19 12:33:48

标签: java android android-mediaplayer picasso

我尝试使用Picasso从单个.mp3文件中检索专辑封面,但我无法这样做。每当应用程序启动时,它都不显示任何内容。

这是我的代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    getInit();

    String path = "/root/sdcard/Bom Diggy Diggy.mp3";

    Picasso.with(this).load(new File(path)).into(album_art);
}

public void getInit() {
    album_art = (ImageView) findViewById(R.id.album_art);
}

我也尝试使用光标获取专辑封面,但它不起作用。任何帮助,将不胜感激。谢谢

1 个答案:

答案 0 :(得分:1)

您必须以picasso load()方法提供图像的路径, .mp3文件的路径。因此,要获得任何mp3文件的专辑封面路径,您需要使用内容解析器,如下所示。

Cursor cursor = getContentResolver().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(albumId)}, 
            null);

if (cursor.moveToFirst()) {
    String path = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Albums.ALBUM_ART));
    Picasso.with(this).load(new File(path)).into(album_art);
}

此处,albumId指的是该歌曲的MediaStore.Audio.Media.ALBUM_ID

如果你正在寻找特定歌曲的专辑封面(而不是在专辑列表中),据我所知,这是一个两阶段的过程,因为ALBUM_ART是{{1}的属性并且不能直接作为歌曲元数据使用。

有关获取专辑封面路径的更多信息,请参阅this