您的位置:首页 > 移动开发 > Android开发

android音乐播放器-------使用android系统自带的数据库

2011-10-10 22:56 483 查看
这几天在做一个音乐播放器,需要读取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");
	}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: