开发者社区> 问答> 正文

关于安卓开发从SD卡中读取音乐的信息的问题

这是我写的获取信息得方法

 public List<Mp3Info> getMp3Infos(String c){
        Cursor cursor = null;
        if(c.equals("songs")){//songs list
            cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                    null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
        }
        else if(c.equals("artists")){//artists list
            cursor = getContentResolver().query(MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI,
                    null, null, null, MediaStore.Audio.Artists.DEFAULT_SORT_ORDER);
        }
        else if(c.equals("albums")){//albums list
            cursor = getContentResolver().query(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
                    null, null, null, MediaStore.Audio.Albums.DEFAULT_SORT_ORDER);
        }
        else if(c.equals("playlist")){//play list
            cursor = getContentResolver().query(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI,
                    null, null, null, MediaStore.Audio.Playlists.DEFAULT_SORT_ORDER);
        }
        List<Mp3Info> mp3Infos = new ArrayList<Mp3Info>();
        int i;
        for(i = 0, cursor.moveToFirst(); i < cursor.getCount(); ++i){
            Mp3Info mp3info = new Mp3Info();
            String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
            String album = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));
            String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
            long duration = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));
            int isMusic = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.IS_MUSIC));
            if(isMusic != 0){
                mp3info.title = title;
                mp3info.album = album;
                mp3info.artist = artist;
                mp3info.duration = duration;
                mp3Infos.add(mp3info);
            }
            cursor.moveToNext();
        }
        return mp3Infos;
    }

使用cursor的时候不需要循环吧?
但是我SD卡中有2个音频文件,却只显示一条信息。

展开
收起
爵霸 2016-03-20 08:21:03 2457 0
1 条回答
写回答
取消 提交回答
  • 把那个循环改为这个呢?
    `
    cursor.movetofirst()
    while(cursor.moveToNext()){
    //你的操作
    }
    `
    我感觉是你那里的循环有点问题,但又不确定,你可以在循环里面打印个信息在logcat里面查看一下,看看它循环了几次~

    2019-07-17 19:08:29
    赞同 展开评论 打赏
问答分类:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
内容驱动游戏分发 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载