1

mp3ファイルからアルバムアートをアプリケーションに含めようとしていますが、getEmbeddedPictureの呼び出しに失敗しました。

私の歌のクラスでは、各歌のアートワークを設定しました:

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);

問題は、どこに何かが欠けているのかということです。アートワーク変数が正しく初期化されていませんか、それとも私のリクエストが間違っていますか?

または、アルバムカバーと音楽情報を取得するためのより良いアプローチはありますか?

4

1 に答える 1

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();
              }
于 2012-05-09T12:33:50.727 に答える