【问题标题】:How to retrieve Album Art from .mp3 file using MediaMetadataRetriever()如何使用 MediaMetadataRetriever() 从 .mp3 文件中检索专辑封面
【发布时间】:2018-10-29 18:51:39
【问题描述】:

我正在尝试从 MP3 文件中检索专辑封面,但以下代码不起作用。每当应用程序启动时,它都会显示灰色框(在 try/catch 块中检查代码)。

public class MainActivity extends AppCompatActivity {

    MediaMetadataRetriever metaRetriver;
    byte[] art;
    ImageView album_art;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        getInit();

        Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;

        Cursor cursor = getContentResolver().query(uri, null, null, null, null);


        cursor.moveToFirst();

        String url = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));

        cursor.close();

        metaRetriver = new MediaMetadataRetriever();
        metaRetriver.setDataSource(url);

        try {
            art = metaRetriver.getEmbeddedPicture();

            Bitmap songImage = BitmapFactory
                    .decodeByteArray(art, 0, art.length);

            album_art.setImageBitmap(songImage);

        } catch (Exception e) {
            album_art.setBackgroundColor(Color.GRAY);
        }
    }

    public void getInit() {

        album_art = (ImageView) findViewById(R.id.album_art);

    }

}

我也尝试使用光标来获取专辑封面,但它不起作用。

【问题讨论】:

    标签: java android android-mediaplayer mediametadataretriever


    【解决方案1】:

    你会收到NullPointerException

    art = metaRetriver.getEmbeddedPicture();
    

    MediaMetadataRetriever 文档](https://developer.android.com/reference/android/media/MediaMetadataRetriever#getembeddedpicture):

    在 setDataSource() 之后调用此方法。此方法找到可选的 与数据源关联的图形或专辑/封面艺术。 如果有多张图片,则返回(任意)一张。

    如果没有找到返回的字节数组是null,所以你必须在解码之前检查null。

    【讨论】:

      【解决方案2】:

      MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;没有专辑封面

      你需要使用Uri uri = MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI;

      【讨论】:

        猜你喜欢
        • 2018-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-21
        • 1970-01-01
        • 1970-01-01
        • 2013-08-01
        • 2012-04-29
        相关资源
        最近更新 更多