Extract album cover from mp3 file in android

前端 未结 4 1481
执笔经年
执笔经年 2020-12-14 04:59

Hello Everyone , In my media player i need to display the album cover(i dont know how it pronounced actually..I hope right) of the song. I knew for that i have to e

相关标签:
4条回答
  • 2020-12-14 05:15

    for api 10 and above

    android.media.MediaMetadataRetriever mmr = new MediaMetadataRetriever();
            mmr.setDataSource(songsList.get(songIndex).get("songPath"));
    
            byte [] data = mmr.getEmbeddedPicture();
                   //coverart is an Imageview object
    
            // convert the byte array to a bitmap
            if(data != null)
            {
                Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
                coverart.setImageBitmap(bitmap); //associated cover art in bitmap
            }
            else
            {
                coverart.setImageResource(R.drawable.fallback_cover); //any default cover resourse folder
            }
    
                coverart.setAdjustViewBounds(true);
                coverart.setLayoutParams(new LinearLayout.LayoutParams(500, 500));
    
    0 讨论(0)
  • 2020-12-14 05:15
     MediaMetadataRetriever mmr = new MediaMetadataRetriever();
     mmr.setDataSource(filePath);
    
    String albumName = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM));
    

    Note this will work only at api level 10 or above

    0 讨论(0)
  • You can try with Picasso by using album_id. it is open source & less memory cache.

    Dependency:

    implementation 'com.squareup.picasso:picasso:2.71828'
    

    Code:

    String albumId = songObject.getAlbum_id();
    
    final Uri albumUri = Uri.parse("content://media/external/audio/albumart");
    
    Uri uri = ContentUris.withAppendedId(albumUri, Long.parseLong(albumId));
    
        Picasso.get().load(uri)
                .fit()
                .centerCrop()
                .error(R.drawable.img_album)
                .into(holder.imgAlbumSongObject);
    

    This is very late. but, may help someone.

    0 讨论(0)
  • 2020-12-14 05:27

    Try FFmpegMediaMetadataRetriever:

    FFmpegMediaMetadataRetriever retriever = new FFmpegMediaMetadataRetriever();
    retriever.setDataSource(uri);
    byte [] data = retriever.getEmbeddedPicture();
    
    // convert the byte array to a bitmap
    Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
    // do something with the image ...
    // mImageView.setImageBitmap(bitmap);
    
    retriever.release();
    
    0 讨论(0)
提交回复
热议问题