【问题标题】:How to show thumbnail of audio files from storage in android如何在android中显示来自存储的音频文件的缩略图
【发布时间】:2022-05-08 10:38:01
【问题描述】:

我想显示带有其余信息的音频文件缩略图, 我如何解析所有音频文件的缩略图

在回收站视图中加载音频文件的功能

private void loadAudio() {
    ContentResolver contentResolver = getContentResolver();
    Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    String selection = MediaStore.Audio.Media.IS_MUSIC + "!= 0";
    String sortOrder = MediaStore.Audio.Media.TITLE + " ASC";
    Cursor cursor = contentResolver.query(uri, null, selection, null, sortOrder);

    if (cursor != null && cursor.getCount() > 0) {
        audioList = new ArrayList<>();
        while (cursor.moveToNext()) {
            String data = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
            String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
            String album = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));
            String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
            String albumId = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID));

            audioList.add(new AudioClass(data, title, album, artist, null));
        }

    } else {
        Log.e(TAG, "ContentResolver got null----------");
    }
    cursor.close();
}

**用于在 recyclerView 中显示文件的音频文件类**

public class AudioClass {
String data;
String title;
String album;
String artist;
Bitmap albumArtPath;

public AudioClass(String data, String title, String album, String artist, Bitmap albumArtPath) {
    this.data = data;
    this.title = title;
    this.album = album;
    this.artist = artist;
    this.albumArtPath = albumArtPath;
}

public String getData() {
    return data;
}

public String getTitle() {
    return title;
}

public String getAlbum() {
    return album;
}

public String getArtist() {
    return artist;
}

public Bitmap getAlbumArtPath() {
    return albumArtPath;
} }

音频文件列表被夸大了,但我无法获得音频文件的缩略图。

【问题讨论】:

标签: android android-mediaplayer


【解决方案1】:

您可以使用MediaMetadataRetriever

MediaMetadataRetriever 类提供了一个统一的接口,用于从输入媒体文件中检索帧和元数据。

例如,以下获取缩略图的代码是一个音频文件。

public Bitmap loadThumbnail(String absolutePath) {
    MediaMetadataRetriever retriever = new MediaMetadataRetriever();
    retriever.setDataSource(absolutePath);
    byte[] data = retriever.getEmbeddedPicture();
    retriever.release();
    if (data == null) {
        return null;
    }
    return BitmapFactory.decodeByteArray(data, 0, data.length);
}

下面的代码是获取艺术家的名字。

public String getArtist(String absolutePath) {
    MediaMetadataRetriever retriever = new MediaMetadataRetriever();
    retriever.setDataSource(absolutePath);
    String artist = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
    retriever.release();
    return artist;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-01
    • 2014-06-24
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多