2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Android开发本地音乐获取专辑封面图片

Android开发本地音乐获取专辑封面图片

时间:2023-09-04 18:57:59

相关推荐

Android开发本地音乐获取专辑封面图片

某项目中需要用到音乐功能,只有音乐还是有一些单调,于是乎想跟音乐播放器一样展示专辑图片,查阅了部分大佬们的代码,总结代码如下:

import android.content.ContentResolver;import android.content.ContentUris;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import .Uri;import android.os.ParcelFileDescriptor;import java.io.FileDescriptor;import java.io.FileNotFoundException;public class MediaUtiles {private static final Uri albumArtUri = Uri.parse("content://media/external/audio/albumart");/*** 从文件当中获取专辑封面位图*/public static Bitmap getArtworkFromFile(Context context, long songid, long albumid){Bitmap bm = null;if(albumid < 0 && songid < 0) {throw new IllegalArgumentException("Must specify an album or a song id");}try {BitmapFactory.Options options = new BitmapFactory.Options();FileDescriptor fd = null;if(albumid < 0){Uri uri = Uri.parse("content://media/external/audio/media/"+ songid + "/albumart");ParcelFileDescriptor pfd = context.getContentResolver().openFileDescriptor(uri, "r");if(pfd != null) {fd = pfd.getFileDescriptor();}} else {Uri uri = ContentUris.withAppendedId(albumArtUri, albumid);ParcelFileDescriptor pfd = context.getContentResolver().openFileDescriptor(uri, "r");if(pfd != null) {fd = pfd.getFileDescriptor();}}options.inSampleSize = 1;// 只进行大小判断options.inJustDecodeBounds = true;// 调用此方法得到options得到图片大小BitmapFactory.decodeFileDescriptor(fd, null, options);// 我们的目标是在800pixel的画面上显示// 所以需要调用computeSampleSize得到图片缩放的比例,根据需要开启这一行代码// options.inSampleSize = 100;// 我们得到了缩放的比例,现在开始正式读入Bitmap数据options.inJustDecodeBounds = false;options.inDither = false;options.inPreferredConfig = Bitmap.Config.ARGB_8888;//根据options参数,减少所需要的内存bm = BitmapFactory.decodeFileDescriptor(fd, null, options);} catch (FileNotFoundException e) {e.printStackTrace();}return bm;}}

使用方法MediaUtiles.getArtworkFromFile(...);

为了更优美的展示,圆形图片也必不可少:

Bitmap bit = MediaUtiles.getArtworkFromFile(getApplicationContext(),mMusicInfos.get(b).songId,mMusicInfos.get(b).albumId);RequestOptions options = new RequestOptions().circleCropTransform();Glide.with(getApplicationContext()).load(bit).apply(options).into(ivArt);

使用Glide前提需要引入依赖;

implementation 'com.github.bumptech.glide:glide:4.10.0'

到此就实现了本地音乐的专辑图片使用,如需要获取本地音乐相关操作,请留言,后续更新本地音乐获取和播放功能。

参考部分文章

/blog/kouriba-1628845

Android开发本地及网络Mp3音乐播放器(五)实现专辑封面图片_iwanghang的博客-CSDN博客_android 获取mp3图片

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。