如何在android中显示存储的音频文件的缩略图



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

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

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();
}

**用于显示回收器中文件的音频文件类查看**

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;
} }

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

您可以使用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;
}

最新更新