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 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题