在Android音乐应用中显示专辑封面

时间:2012-04-30 09:41:27

标签: android android-mediaplayer

我正在尝试将一个mp3文件中的Album Art包含到我的应用程序中,但它说: 调用getEmbeddedPicture失败。

在我的Song课程中,我设置了每首歌曲的艺术作品:

metaDataRetriver = new MediaMetadataRetriever();
metaDataRetriver.setDataSource(path);
//path = /mnt/sdcard/chan_mp3/Titel.mp3
byte[] artwork = metaDataRetriver.getEmbeddedPicture();

在我的CustomAdapter中,我尝试显示封面:

// This code works perfectly fine: for each song I get artist and title
textView.setText(values.get(position).getArtist() + " - " + values.get(position).getTitle());

// This code doesn't work at all
byte[] artwork = values.get(position).getArtwork();
Bitmap bMap = BitmapFactory.decodeByteArray(artwork, 0, artwork.length);
imageView.setImageBitmap(bMap);

问题是我在哪里错过了什么?是没有正确初始化的艺术品变量还是我的要求错了?

或者有没有更好的方法来获取专辑封面和音乐信息?

1 个答案:

答案 0 :(得分:2)

我找到了另一种方法...我将为每首歌保存每个albumId然后我可以使用以下代码获取封面艺术:

          Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart");
          Uri uri = ContentUris.withAppendedId(sArtworkUri, Integer.valueOf(albumId));
          ContentResolver res = context.getContentResolver();
          InputStream in;
          try {
              in = res.openInputStream(uri);
              artwork = BitmapFactory.decodeStream(in);
              } catch (FileNotFoundException e) {
                  e.printStackTrace();
              }