我尝试使用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);
}
我也尝试使用光标获取专辑封面,但它不起作用。任何帮助,将不胜感激。谢谢
答案 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。