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

Android 扫描SD卡内所有MP3(音频)文件

2015-04-23 10:23 393 查看
这段时间一个MP3小项目,其中有一个功能就是扫描SD卡内所有MP3文件。

在这儿我首先就想到了一个方法:遍历SD卡内所有目录或文件

1.遍历SD卡内所有目录或文件

/**
* 获取SD卡内所有音频文件的路径
* 有多少条记录,List就有多大
* @return
*         ScanInfo类型的表
*/
public List<ScanInfo> searchAllDirectory() {
List<ScanInfo> list = new ArrayList<ScanInfo>();
StringBuffer sb = new StringBuffer();//存放data的缓存
//要返回的列(属性)
String[] projection = { MediaStore.Audio.Media.DISPLAY_NAME,MediaStore.Audio.Media.DATA };
/*
* 参数:
* uri 提供内容的地址
* projection 查询要返回的列
* selection 查询where字句
* selectionArgs 查询条件属性值
* sortOrder 结果排序规则
*/
Cursor cr = context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, null,null, MediaStore.Audio.Media.DISPLAY_NAME);
String displayName = null;
String data = null;
while (cr.moveToNext()) {//移动到下一刻度,返回boolean类型值
displayName = cr.getString(cr.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));//音频文件名
data = cr.getString(cr.getColumnIndex(MediaStore.Audio.Media.DATA));//音频文件路径+文件名
if(data!=null&&displayName!=null){
data = data.replace(displayName, " ");// 替换文件名留下它的上一级目录
}

if (!sb.toString().contains(data)) {
list.add(new ScanInfo(data, true));//默认全部勾选
sb.append(data);//加入到缓存里
}
}
cr.close();//关闭游标
return list;
}


View Code

如果是获取音频文件其他属性也可类似用此方法。

View Code
对于其他类型的文件,只要com.android.providers中有这种文件信息数据库,扫描SD卡内所有这种类型文件也可以同样这么做。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: