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,
- null, null);
- 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文件的方法写出来,实现了一个接口:
- package com.ll28;
- import java.io.File;
- import java.io.FilenameFilter;
- public class MusicFilter implements FilenameFilter
- {
- @Override
- public boolean accept(File dir, String filename)
- {
- return filename.endsWith(".mp3");
- }
- }
相关推荐
IT之家 2020-03-11
graseed 2020-10-28
zbkyumlei 2020-10-12
SXIAOYI 2020-09-16
jinhao 2020-09-07
impress 2020-08-26
liuqipao 2020-07-07
淡风wisdon大大 2020-06-06
yoohsummer 2020-06-01
chenjia00 2020-05-29
baike 2020-05-19
扭来不叫牛奶 2020-05-08
hxmilyy 2020-05-11
黎豆子 2020-05-07
xiongweiwei00 2020-04-29
Cypress 2020-04-25
冰蝶 2020-04-20