Java 如何使用毕加索从.mp3文件检索相册艺术

Java 如何使用毕加索从.mp3文件检索相册艺术,java,android,android-mediaplayer,picasso,Java,Android,Android Mediaplayer,Picasso,我试图用毕加索从一个.mp3文件中检索相册艺术,但我做不到。每当应用程序启动时,它都不会显示任何内容 这是我的密码: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getInit(); String path = "/root/sdcard/Bom D

我试图用毕加索从一个.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);
}

我也尝试过使用游标来获取专辑艺术,但它不起作用。任何帮助都将不胜感激。谢谢

您必须在毕加索
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\u ID

如果您正在为特定歌曲(而不是在专辑列表中)寻找专辑艺术,据我所知,这是一个两阶段的过程,因为
album\u art
MediaStore.Audio.albums
的属性,不能直接作为歌曲元数据提供


有关获取相册艺术路径的更多信息,请参阅

我试过你的代码,但什么也没显示,你知道还有其他方法吗?我所要做的就是从歌曲中获得专辑艺术,并将其显示在ImageView和您提供的链接上。我以前读过这些答案,但没有任何效果