Android读取Mp3音乐文件的方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android读取Mp3音乐文件的方法
在做Mp3音乐播放器的时候,需要经常用到读取文件的操作,看过网上一些人写的读取方法,做个总结,部分代码有相似之处。
一、通过过滤器的方式过滤文件
[java] view plaincopypublic class MusicFilter implements FilenameFilter{ public boolean accept(File dir , String name){ return
(name.endsWith(".mp3")); } }
[java] view plaincopypublic void
musicList(){ mMusicList.clear();//先清除列表里之前的信息,mMusicList是自定义的list File home=new
File(MUSIC_PATH); if(home.listFiles(new MusicFilter()).length>0){ for(File
file :home.listFiles(new
MusicFileter())){ mMusicList.add(file.getNam e()); //把歌曲名字添加到mMusicList列表
中} } } 二、通过递归,判断文件后缀名的方法
[java] view plaincopypublic void Search(File file ,String[] ext){ if(file!=null){ if(file.isDirectory()){//如果是文件夹File[] listFile=file.listFiles();//列出所有的文件放在listFile这个File类型数组中
if(listFile!=null){ for(int i=0;i
search(listFile[i], ext);//递归,直到把所有文件遍历
完} } }else{/ /否则就是文件String
fileName=file.getAbsolutePath();//返回抽象路径名的绝对路径名字符串String name=file.getName();//获得文件的名称for(int i=0;i
if(fileName.endsWith(ext[i])){//判断文件后缀名是否包含我们定义的格式list.add(name); break; } } } } } 调用的时候先声明file和String[] ext
[java] view plaincopyprivate String[] ext={".mp3", ".awv"}//定义我们要查找的文件格式File
file=Environment.getExternalStorageDirectory();//获得SD卡的路径search(file ,ext);
三、通过MediaStore的方式查询数据库得到歌曲信息
MediaStore这个类是Android系统提供的而一个多媒体数据库,android中多媒体信息都可以从这里提取,包括了多媒体数据库的所有信息,例如音频、视频和图像,android把所有的多媒体数据接口进行了封装,所有的数据库不用自己进行创建,直接调用ContentResolver去调用那些已经封装好的接口就可以进行数据库操作了,操作视频和图像的方法和操作音频类似,只需要将URL部分改动就可以了。
首先,要得到一个ContentResolver实例,利用Activity或者Service中的Context也可以ContentResolvermResolver =Context.getContentReslover; Cursor cursor
=mResolver.query(MediaStore.Audio.Media.EXTERNAL_CO NTENT_URL,null,null,null,MediaStore.Audio.Media.DEFAUL T_SORT_ORDER);
//介绍下query方法query(uri,prjs,selections,selectArgs,order); Uri :这个Uri代表要查询单额数据库名称加上表的名称,一般直接从MediaStroe里获取的信息,例如我们要取得所有的歌曲信息,就必须利用
MediaStore.Audio.Media.EXTERNAL_CONTENT_RUI这个
Uri。专辑信息要利用
MediaStore.Audio.Albums.EXTERNA_CONTENT_URI这个Uri来查询,其他的也类似。
Prjs:代表要从表中选择的列,用一个StringS数组来表示。Selections:相当于SQL语句中的where子句,就是代表你的查询条件。
selectArgs:这个参数是说你的Selections里有?这个符号是,这里可以以实际值代替这个问号。如果Selections这个没有?的话,那么这个String数组可以为null。
Order:说明查询结果按什么来排序。
1、建立一个类,定义我们的文件信息
[java] view plaincopypublic class Mp3Info{ private long id; // 歌曲ID 3 private String title; // 歌曲名称0 private String album; // 专辑7 private long albumId;//
专辑ID 6 private String displayName; //显示名称4 private String artist; // 歌手名称2 private long duration; // 歌曲时长1 private long size; // 歌曲大小8
private String url; // 歌曲路径5 private String lrcTitle; // 歌词名称private String lrcSize; // 歌词大小
public Mp3Info(){ super(); }
public Mp3Info(long id, String title, String album, long albumId,