Android音乐播放器:使用Android系统自带的数据库

这几天在做一个音乐播放器,需要读取SD卡上的所有音乐文件。

我的想法是遍历所有SD卡上的所有文件目录,把所有的.mp3 等音乐格式的文件全部读取出来,在显示在listview上。

这个做法是最容易想到的,也是可行的。

缺点是显而易见的,就是效率低,占用了大量的资源。


后来在飞哥的指导下,才知道Android系统中默认有个数据库,来保存所有的音乐格式的文件。在系统的位置:





这个数据库建的很详细,基本上想要的信息都能找到。


之后直接使用这个数据的数据就行了。

例如:

/**       * 显示音乐列表       */       private void showListView()       {           String[] projection =           { MediaStore.Audio.AudioColumns._ID,                   MediaStore.Audio.AudioColumns.ARTIST,                   MediaStore.Audio.AudioColumns.TITLE,                   MediaStore.Audio.AudioColumns.DURATION };           Cursor c = getContentResolver().query(                   MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, null,                   nullnull);              musicList = new int[c.getCount()];           int index = 0;           while (c.moveToNext())           {               musicList[index] = c.getInt(0);               index++;           }              startManagingCursor(c);              String[] from =           { MediaStore.Audio.AudioColumns.TITLE,                   MediaStore.Audio.AudioColumns.ARTIST,                   MediaStore.Audio.AudioColumns.DURATION };           int[] to =           { R.id.tv_musicname, R.id.tv_singer, R.id.tv_musictime };           MusicListAdapter adapter = new MusicListAdapter(this,                   R.layout.musiclist_item, c, from, to);           mListView.setAdapter(adapter);       }  

顺便把直接读取CD卡上mp3文件的方法写出来,实现了一个接口:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwydpd.html