最近我正在开发一个音频管理器项目,但不知道如何在 android 中设置音频缩略图。 非常感谢。
你好@bovietvidai,希望你一切顺利。在这里我将我的建议添加到您的问题中。
您可以使用以下代码片段创建
bitmap
。
Bitmap image = ThumbnailUtils.createAudioThumbnail(file, MediaStore.Images.Thumbnails.MICRO_KIND);
在上面的代码片段中
file
对象是音频文件。
您可以使用以下代码片段使用
MediaMetadataRetriever
进行获取。
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
byte[] imgbyte;
Bitmap bitmp;
BitmapFactory.Options option =new BitmapFactory.Options();
mmr.setDataSource(getApplicationContext(), uri);
imgbyte = mmr.getEmbeddedPicture();
if (imgbyte != null)
bitmp = BitmapFactory.decodeByteArray(imgbyte, 0,imgbyte.length, option);
如果您使用
Cursor
获取媒体项,则可以使用以下代码片段使用 Cursor
进行获取。
Cursor cursor = getContentResolver().query(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
new String[] {MediaStore.Audio.Albums._ID, MediaStore.Audio.Albums.ALBUM_ART},
MediaStore.Audio.Albums._ID+ "=?",
new String[] {String.valueOf(albumId)},
null);
if (cursor.moveToFirst()) {
String albumart = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Albums.ALBUM_ART));
Bitmap bm = BitmapFactory.decodeFile(albumart);
}
我认为所有 3 个选项都适合您。
最好的选择是使用 glide 添加,因为它不会创建后台任务问题,并且可以在出现任何错误时设置一些默认图像
val projection = arrayOf(
MediaStore.Audio.Media.ALBUM_ID,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.SIZE,
MediaStore.Audio.Media.DATA
)
val query = contentResolver.query(collection, projection, null, null, null)
query?.use { cursor ->
// Cache column indices.
val idColumn = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID)
val nameColumn = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME)
val durationColumn = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION)
val sizeColumn = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE)
val dataColumn = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA)
while (cursor.moveToNext()) {
// Get values of columns for a given video.
val id = cursor.getLong(idColumn)
val name = cursor.getString(nameColumn)
val duration = cursor.getInt(durationColumn)
val size = cursor.getInt(sizeColumn)
val data = cursor.getString(dataColumn)
val contentUri: Uri = Uri.fromFile(File(data))
//every device works with this Uri
val sArt = Uri.parse("content://media/external/audio/albumart")
val musicThumbnail: Uri = ContentUris.withAppendedId(
sArt,
id
)
Glide.with(context).load(musicThumbnail).error(R.drawable.baseline_music_note_24).into(yourImageView)