zoukankan      html  css  js  c++  java
  • 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;
        }

  • 相关阅读:
    HandlerThread
    handler原理
    死锁简析
    Android序列化
    AsyncTask原理
    【java线程池】
    java创建线程的三种方式
    service相关
    【hashMap】详谈
    【activity任务栈】浅析
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/6215476.html
Copyright © 2011-2022 走看看