(相关资料图)
1、该图片为使用如下代码解析得到: 参考源码中,音乐目录: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============================");}这是抽取专辑图片的方法,扫描歌曲的时候自己把歌曲的id和专辑的id传进去就能获取private static final Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart");/*** 将MP3里图片读取出来* * @param context* @param songid* @param albumid* @return*/public static Bitmap getMusicBitemp(Context context, long songid,long albumid) {Bitmap bm = null;// 专辑id和歌曲id小于0说明没有专辑、歌曲。
2、并抛出异常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);} else {return null;}}} catch (FileNotFoundException ex) {}return bm;}。
本文到此分享完毕,希望对大家有所帮助。
标签:
精彩推荐
1、该图片为使用如下代码解析得到:参考源码中,音乐目录:packages ap
本公司董事会及全体董事保证本公告内容不存在任何虚假记载、误导性陈述
夏至之后就会迎来小暑节气,也意味着炎热的夏季要开启。而在每一年小暑
1、丰衣足食[fēngyīzúshí]:足,够;穿的吃的都很丰富充足;形容生
1、大概你玩的是免费F吧?这个任务我以前也做过,是人类的任务。2、巨
Intel酷睿i5-3450基于四核四线程设计,CPU默认主频为1GHz,支持睿频0智
李梦本场拿下12分5助攻4篮板。时隔9个月,中国女篮继去年世界杯收获亚
运毒女子连续怀孕欲逃避刑罚,因未实际哺乳被依法收监
1、韩红的高音歌曲很多。2、比如天路、九儿、青藏高原、家乡、那片海、
琴妹妹:日;做适合自己的行情,赚自己该赚的钱,晚间策略查收了吗?周
商报全媒体讯(椰网 海拔新闻记者陈勇合)6月26日,记者从海口公安交警
现如今,人们对软软糯糯、可可爱爱的小动物没有任何抵抗力,特别在高压的
证券时报e公司讯,据港交所文件显示,伯克希尔哈撒韦公司在6月19日出售
1、天宇好迅游是垃圾相信我不要用迅游~~!!!!配合配合!!谢谢。本
信网6月26日讯(记者李鑫邦)为全面推进中小学垃圾分类宣传工作,引导
红网时刻新闻6月26日讯(通讯员龙玉玲)为进一步学习贯彻落实党的二十
大家好,小评来为大家解答以上问题。偲怎么读音,spain怎么读音很多人
今天小红来为大家带来的是传奇私服外挂哪个好,传奇私服外挂及时雨,让
安信证券发布研究报告称,年初以来,家电的复苏进度稳健。监测数据显示
DoNews6月26日消息,据GSMA官方消息,2023上海世界移动通信大会(MWC上
资讯News
06-20
11-03
11-03
11-03
11-03
11-03
11-03
11-03
11-03
11-03
11-03
聚焦Policy
当好农民工的“护薪人” 近日,罗某等7名农民工在收到被拖欠的工资后,纷纷打电话向江西省南昌市...
“通讯录里所有人都知道我欠钱了” □ 本报记者 韩丹东 □ 本报见习记者 张守坤 ...
大连宝马车撞人案肇事司机被判死刑 本报讯 记者韩宇 10月29日,辽宁省大连市中级人民法院一审...
医院财务迷上网络赌博输光5000万元公款 □ 本报记者 马维博 □ 本报通讯员 汪宇堂 曹...
辊环车削 雕琢毫厘(工匠绝活) 【绝活看点】 23年来,雷虎始终扎根一线,改进钢材轧制工艺...
交警严查超标电动自行车挪用“白牌” 截至昨晚6时,处罚电动自行车违法行为共计6585笔;下一步将...
明起寒潮来袭 北方气温普降10℃以上 中央气象台预计,本周日北京平原地区最低气温降至-4℃左右...
多种蔬菜价格降幅达五成 包括菠菜、蒿子秆等 预计本月中旬蔬菜恢复供需平衡 本报讯(记者...
北京周日最低气温或达-4℃ 本报讯(记者 赵婷婷)北京青年报记者昨天从中央气象台获悉,新一股...
昌平一家四口确诊新冠肺炎 天通北苑第二社区升级为中风险地区 朝阳两涉疫校区及16所学校停课 ...