android开发音乐播放器--Genres和Art album的获取

最近在做一个项目,其中涉及到音乐播放器。当用到Genres和Art album时花费了一些时间才搞定,今天把方法草草列出,以供自己以后忘记时查看,也希望可以帮助碰到同样问题的道友!!

一、Genres的获取

先获取audioId(这个都知道吧,就不再多说了)

       public String getGenres(long audioId){
        Uri uri = Uri.parse("content://media/external/audio/media/" + audioId+ "/genres");
        Cursor c = mContentResolver.query(uri, new String[]{Android.provider.MediaStore.Audio.GenresColumns.NAME}, null, null, null);
        if(c.moveToFirst()){
            String genre = c.getString(c.getColumnIndex(GenresColumns.NAME));
            c.close();
            return genre;
        }
        
        return null;
    }

二、Art album的获取

Art album的获取方法有两种:

方法一:获取albumId//每个专辑的Id ,返回值是专辑封面图片的路径

private String getAlbumArt(int albumid) {  
    String strAlbums = "content://media/external/audio/albums";  
    String[] projection = new String[] {android.provider.MediaStore.Audio.AlbumColumns.ALBUM_ART };  
    Cursor cur = this.getContentResolver().query(  
            Uri.parse(strAlbums + "/" + Integer.toString(albumid)),  
            projection, null, null, null);  
    String strPath = null;  
    if (cur.getCount() > 0 && cur.getColumnCount() > 0) {  
        cur.moveToNext();  
        strPath = cur.getString(0);  
    }  
    cur.close();  
    cur = null;  
    return strPath;  
}
方法二:获取audioId //注意此时获取的是每首歌曲的Id 返回值为专辑封面图片的Bitmap

public Bitmap getArtAlbum(long audioId){
        String str = "content://media/external/audio/media/" + audioId+ "/albumart";
        Uri uri = Uri.parse(str);
        ParcelFileDescriptor pfd = null;
        try {
            pfd = this.getContentResolver().openFileDescriptor(uri, "r");
        } catch (FileNotFoundException e) {
            return null;
        }
        Bitmap bm;
        if (pfd != null) {  
            FileDescriptor fd = pfd.getFileDescriptor();
            bm = BitmapFactory.decodeFileDescriptor(fd);
            return bm;
        }
        return null;
    }

posted @   brave-sailor  阅读(356)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
历史上的今天:
2015-12-23 swift锁屏播放,音乐进度更新,专辑,歌手名显示
2015-12-23 swift Dictionary 字典
2015-12-23 Swift中的集合类型
2015-12-23 Swift String 一些常用方法
2015-12-23 Swift自定义Class实现Hashable
2014-12-23 Java注释@interface的用法
2013-12-23 Java 完美判断中文字符的方法
点击右上角即可分享
微信分享提示