9 7

得到所有音乐

在做android音乐播放器吗?还在扫描目录吗?

不需要啦,直接可以通过系统接口得到手机内的所有音乐哦。

而且会帮你解析好id3歌曲信息

contentProvider是个好东西,有什么需要和其他程序共享的,都可以借助这个实现

音乐也不例外

手机开机时会有提示正在扫描媒体,然后扫描完成后还会发送一个media_scanner_finished广播来通知你

然后就可以直接查询到所有音乐信息了,使用contentResolver实现

很简单很简单,但我之前网上找了好久都没找到,这次无意中发现一段代码,拿出来共享一下

直接贴代码了。

        class Music {
            String title, art, album;
            long length;

        public String toString() {
            return "{title:" + title + ",art:" + art + ",album:" + album
                    + ",length:" + length + "}";
        }
    }

    List<Music> list = new ArrayList<Music>();

    Context ctx = getContext();
    ContentResolver cr = ctx.getContentResolver();
    Cursor c = cr.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null,
            null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
    while (c.moveToNext()) {
        Music music = new Music();
        music.title = c.getString(c
                .getColumnIndex(MediaStore.Audio.AudioColumns.TITLE));
        music.art = c.getString(c
                .getColumnIndex(MediaStore.Audio.AudioColumns.ARTIST));
        music.album = c.getString(c
                .getColumnIndex(MediaStore.Audio.AudioColumns.ALBUM));
        music.length = c.getLong(c
                .getColumnIndex(MediaStore.MediaColumns.SIZE));
        list.add(music);
    }
    for (Music m : list) {
        System.out.println(m);
    }</pre>

好了,全部完工。