如何在Android中显示音频文件的缩略图?

时间:2018-08-07 18:33:01

标签: android listview audio thumbnails mediastore

我一直试图在我的歌曲列表中包含音频文件的缩略图。但是经过几次尝试,我未能做到这一点。我不知道该如何执行。有什么简单的方法来获取音频文件的缩略图?我在下面提供了我实际上正在寻找的示例图片。

private class MediaCursorAdapter extends SimpleCursorAdapter {

    MediaCursorAdapter(Context context, int layout, Cursor c) {
        super(context, layout, c, new String[]{MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.TITLE,
                         MediaStore.Audio.Media.ALBUM_ID},
                new int[]{R.id.title, R.id.displayname, R.id.thumbnail});
    }

    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        TextView title = view.findViewById(R.id.title);
        TextView name = view.findViewById(R.id.displayname);
        ImageView thumbnail = view.findViewById(R.id.thumbnail);

        MediaMetadataRetriever mmr = new MediaMetadataRetriever();
        byte[] rawArt;
        Bitmap art = null;
        BitmapFactory.Options bfo=new BitmapFactory.Options();

        mmr.setDataSource(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID)));
        rawArt = mmr.getEmbeddedPicture();

        if (null != rawArt)
            art = BitmapFactory.decodeByteArray(rawArt, 0, rawArt.length, bfo);

        thumbnail.setImageBitmap(art);

        name.setText(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE)));

        title.setText(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)));


        view.setTag(cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DATA)));

    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        LayoutInflater inflater = LayoutInflater.from(context);
        View v = inflater.inflate(R.layout.song_list, parent, false);

        bindView(v, context, cursor);

        return v;
    }
}

Audio thumbnail

2 个答案:

答案 0 :(得分:0)

This是获取音频文件缩略图的方式。如果返回null值,则表示音频没有图像。您还可以为音频设置默认的缩略图图标,或将可绘制对象中的资源用作默认资源。

答案 1 :(得分:0)

您应该查看此帖子,看看它是否对 How can I display Album Art using MediaStore.Audio.Albums.ALBUM_ART? 有帮助,并确认您的自定义列表视图适配器工作正常