Отображение обложки альбома в приложении Android Music

Я пытаюсь включить обложку альбома из mp3-файла в свое приложение, но оно говорит: Ошибка вызова 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);

Вопрос, где я что-то упускаю? переменная художественного произведения неправильно инициализирована или мой запрос неверен?

Или есть лучший способ получить обложку альбома и информацию о музыке?


person Sebastian Oberste-Vorth    schedule 30.04.2012    source источник


Ответы (1)


Я нашел другой способ сделать это... Я сохраню каждый альбом для каждой песни, а затем смогу получить обложку с помощью следующего кода:

          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();
              }
person Sebastian Oberste-Vorth    schedule 09.05.2012
comment
Разве это не делает список очень запаздывающим? Как улучшить производительность? - person h4ck3d; 23.02.2013
comment
не могли бы вы предоставить источник - person ; 03.08.2013