2013-05-07 2 views
0

Как получить обложку альбома (например, файл изображения) из файла песни, я могу получить обложку альбома из файла, находящегося в папке с музыкой, но как получить , когда музыкальный файл находится по другому пути, кроме музыкальной папкиКак получить обложку альбома из файла песни в android

Пожалуйста, предложите любое предложение. Заранее спасибо

+0

хранения сканирования музыкальных файлов и не использовать 'MediaMetadataRetriever', чтобы получить обложку альбома, если есть, но вы должны знать, что этот API добавлен в API-уровень 10 (Android 2.3.3). – hardartcore

+0

спасибо .. это сработало ... – Naruto

ответ

0

Сначала получите список всех композиций из медиа-магазина.

public void getSongList() { 
    // retrieve song info 

    ContentResolver res = getContentResolver(); 
    Uri musicUri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 
    Cursor cursor = res.query(musicUri, null, null, null, 
      null); 


    if (cursor != null && cursor.moveToFirst()) { 
     // get columns 
     int titleColumn = cursor.getColumnIndex(MediaColumns.TITLE); 
     int idColumn = cursor.getColumnIndex(BaseColumns._ID); 
     int artistColumn = cursor.getColumnIndex(AudioColumns.ARTIST); 
     int column_index = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA); 

     // add songs to list 
     do { 
      long thisId = cursor.getLong(idColumn); 
      String pathId = cursor.getString(column_index); 
      Log.d(this.getClass().getName(), "path id=" + pathId); 

      metaRetriver.setDataSource(pathId); 
      try { 
       art = metaRetriver.getEmbeddedPicture(); 
       Options opt = new Options(); 
       opt.inSampleSize = 2; 
       songImage = BitmapFactory .decodeByteArray(art, 0, art.length,opt); 
      } 
      catch (Exception e) 
      { imgAlbumArt.setBackgroundColor(Color.GRAY); 
      } 

      String thisTitle = cursor.getString(titleColumn); 
      String thisArtist = cursor.getString(artistColumn); 
      songList.add(new Song(thisId, thisTitle, thisArtist,songImage)); 
     } while (cursor.moveToNext()); 

    } 

Затем после получения списка композиций можно использовать song.getsongImage();

Bitmap bm= BitmapFactory.decodeFile(song.getsongImage()); 
    ImageView image=(ImageView)findViewById(song.getsongImage()); 
Смежные вопросы