java 获取mp3 封面_android 怎样获取歌曲的专辑封面
展开全部
该图片为使用如下代码解e5a48de588b662616964757a686964616f31333339666135析得到:
参考源码中,音乐目录:
packages/apps/Music/src/com/android/music/MusicUtils.java中函数:getArtwork(context, song_id, album_id, true)
public static Bitmap getArtwork(Context context, long song_id, long album_id,
boolean allowdefault) {
if (album_id < 0) {
// This is something that is not in the database, so get the album art directly
// from the file.
if (song_id >= 0) {
Bitmap bm = getArtworkFromFile(context, song_id, -1);
if (bm != null) {
return bm;
}
}
if (allowdefault) {
return getDefaultArtwork(context);
}
return null;
}
ContentResolver res = context.getContentResolver();
Uri uri = ContentUris.withAppendedId(sArtworkUri, album_id);
if (uri != null) {
InputStream in = null;
try {
in = res.openInputStream(uri);
return BitmapFactory.decodeStream(in, null, sBitmapOptions);
} catch (FileNotFoundException ex) {
// The album art thumbnail does not actually exist. Maybe the user deleted it, or
// maybe it never existed to begin with.
Bitmap bm = getArtworkFromFile(context, song_id, album_id);
if (bm != null) {
if (bm.getConfig() == null) {
bm = bm.copy(Bitmap.Config.RGB_565, false);
if (bm == null && allowdefault) {
return getDefaultArtwork(context);
}
}
} else if (allowdefault) {
bm = getDefaultArtwork(context);
}
return bm;
} finally {
try {
if (in != null) {
in.close();
}
} catch (IOException ex) {
}
}
}
return null;
}
private static Bitmap getArtworkFromFile(Context context, long songid, long albumid) {
Bitmap bm = null;
byte [] art = null;
String path = null;
if (albumid < 0 && songid < 0) {
throw new IllegalArgumentException("Must specify an album or a song id");
}
try {
if (albumid < 0) {
Uri uri = Uri.parse("content://media/external/audio/media/" + songid + "/albumart");
ParcelFileDescriptor pfd = context.getContentResolver().openFileDescriptor(uri, "r");
if (pfd != null) {
FileDescriptor fd = pfd.getFileDescriptor();
bm = BitmapFactory.decodeFileDescriptor(fd);
}
} else {
Uri uri = ContentUris.withAppendedId(sArtworkUri, albumid);
ParcelFileDescriptor pfd = context.getContentResolver().openFileDescriptor(uri, "r");
if (pfd != null) {
FileDescriptor fd = pfd.getFileDescriptor();
bm = BitmapFactory.decodeFileDescriptor(fd);
}
}
} catch (FileNotFoundException ex) {
}
if (bm != null) {
mCachedBit = bm;
}
return bm;
}
private static Bitmap getDefaultArtwork(Context context) {
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inPreferredConfig = Bitmap.Config.RGB_565;
return BitmapFactory.decodeStream(
context.getResources().openRawResource(R.drawable.play_img_default), null, opts);
}
private static final Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart");
private static final BitmapFactory.Options sBitmapOptions = new BitmapFactory.Options();
private static Bitmap mCachedBit = null;
获取cursor:
myCur = getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
new String[] { MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.ALBUM_ID}, null,null, null);
myCur.moveToPosition(position);
设置专辑封面图片:
long songid = myCur.getLong(3);
long albumid = myCur.getLong(7);
Bitmap bm = MusicUtils.getArtwork(this, songid, albumid,true);
if(bm != null){
Log.d(TAG,"bm is not null==========================");
playImg.setImageBitmap(bm);
}else{
Log.d(TAG,"bm is null============================");
}
已赞过
已踩过<
你对这个回答的评价是?
评论
收起
java 获取mp3 封面_android 怎样获取歌曲的专辑封面相关推荐
- java获取MP3文件信息(歌手,歌名,封面,专辑,时长)
可以用本地的文件地址测试(令url=文件地址) package com.test.inside.util;import org.jaudiotagger.audio.AudioFileIO; impo ...
- java mp3 信息_Java代码获取Mp3音乐的歌名、歌手、专辑名等信息
这里介绍的是使用Jaudiotagger库获取Mp3音频文件的歌名.歌手.专辑名等信息.使用的jaudiotagger-2.2.6-SNAPSHOT.jar包下载地址:Download. 实现代码如下 ...
- 在桌面上显示当前的ip地址_如何在桌面上显示当前播放的歌曲的专辑封面
在桌面上显示当前的ip地址 Album art used to be an inseparable part of music, back when it came in record or CD f ...
- java 获取mp3 封面_java如何获取.mp3格式文件内置歌曲封面
展开全部 封面就是图片,62616964757a686964616fe59b9ee7ad9431333337616466用java的类抓取图片即可package tool; import java.a ...
- java手机电池充电代码_Android中获取电池电量实例代码
/** * * @author chrp * *显示当前电池电量 */ public class MainActivity extends Activity { private TextView tv ...
- java 获取手机系统_Android系统信息获取
Build.BOARD // 主板 Build.BRAND // 系统定制商 Build.SUPPORTED_ABIS //CPU指令集 Build.DEVICE // 设备参数 Build.DISP ...
- android获取imei兼容_Android如何获取双卡手机IMEI的方法示例
前言: 项目中有个统计付费广告转化率的需求,需要获取用户手机的IMEI.但是网上最常见的方法有坑,也就是TelephonyManager.getDeviceId(),这方法有可能获取的是MEID或者空 ...
- android获取imei兼容_Android中获取IMEI码的方法
公共请求头 所有HTTP请求中,都包含如下公共请求头(HTTP Header): 名称 类型 是否必需 描述 Accept String 是 接受的返回类型,目前只支持JSON:application ...
- android获取网络时区_android 网络获取当前时区
[转]Android配置文件权限一览表 转自:http://blog.csdn.net/kbest/article/details/7495154访问登记属性 android.permission.A ...
最新文章
- nagios 使用MSN 发报警消息
- 报名 | 面向智慧城市的人本尺度城市形态:理论、方法与实践讲座
- matlab 向量去除空格,MATLAB向量
- 开学考试学生成绩管理Java
- Android 开源框架Universal-Image-Loader学习
- PHP经常使用正則表達式汇总
- linux 让暂停的进程恢复,Linux 下进程的挂起和恢复命令
- SpringBoot Logback配置,SpringBoot日志配置
- 网易云音乐缓存转换至mp3(Python实现)
- python 百度翻译官方api和破解版方法
- 程序员双十一都该买点啥?
- 计算机控制系统信号恢复之零阶保持器
- vue嵌入app中——首次加载慢的动画
- CST微波工作室 简单微带天线复现(内附模型)
- Windows11 系统打开IE浏览器的方式(完整版)
- 阿里云服务器白嫖和购买教程——学生向
- 深度学习1:二分类问题
- Jmeter使用及压测
- 【计蒜客】等边三角形
- c# datagirdview报dataerror请处理等等
热门文章
- maya阿诺德渲染失败_maya2018无法加载ARNOLD渲染器?maya2018中ARNOLD渲染器加载不了怎么办?...
- 子弹散射——Unity随手记(2021.2.4)
- 最火的python视频_超火Python400集视频,116-248集思维导图视频介绍(第二季)
- 3步释放工作和生活压力
- VSTO Ribbons的完整介绍
- WebDAV将会在公共领域取代FTP
- STM32利用定时器实现微妙延时
- 布隆过滤器原理和基于BloomFilter的误判率展示
- 车载服务器系统,车载系统平台与终端产品的介绍
- sdoi2009 [动态规划 状态压缩DP] 学校食堂