MervynLammm 2016-01-02 06:07 采纳率: 50%
浏览 2057

安卓开发从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个音频文件,却只显示一条信息。

  • 写回答

1条回答 默认 最新

  • AAArlex 2016-01-03 17:37
    关注

    把那个循环改为这个呢?
    cursor.movetofirst()
    while(cursor.moveToNext()){
    //你的操作
    }
    我感觉是你那里的循环有点问题,但又不确定,你可以在循环里面打印个信息在logcat里面查看一下,看看它循环了几次~

    评论

报告相同问题?

悬赏问题

  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?