今天研究了下如何在Android读取SD卡中的媒体文件(MP3),开始的思路是遍历SD卡所有目录,相信这也是所有开发者第一会想到的思路,无法就是遍历所有文件,将所有后缀名为.mp3读取出来;但是最后发现,如果你对Android稍有了解,你会发现,其实媒体扫描这个工作,Android设置已经替我们干了,Android系统会在SD卡有更新的时候自动将SD卡文件分类(视频/音频/图片...),并存入SQLite数据库,就保存在媒体存储器里面(com.android.providers.media),下面代码是从媒体存储器里面读取MP3文件的方法:

public ArrayList<HashMap<String,Object>> scanAllAudioFiles(){//生成动态数组,并且转载数据      ArrayList<HashMap<String,Object>> mylist = newArrayList<HashMap<String,Object>>();  //查询媒体数据库Cursor cursor =getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);//遍历媒体数据库if(cursor.moveToFirst()){       while (!cursor.isAfterLast()){              //歌曲编号       int id =cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID));        //歌曲标题       String tilte =cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));        //歌曲的专辑名:MediaStore.Audio.Media.ALBUM       String album =cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM));        //歌曲的歌手名: MediaStore.Audio.Media.ARTIST       String artist =cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));        //歌曲文件的路径 :MediaStore.Audio.Media.DATA       String url =cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));          //歌曲的总播放时长:MediaStore.Audio.Media.DURATION       int duration =cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));          //歌曲文件的大小 :MediaStore.Audio.Media.SIZE       Long size =cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE));             if(size>1024*800){//大于800K       HashMap<String,Object> map = new HashMap<String,Object>();       map.put("musicId", id);         map.put("musicTitle", tilte);        map.put("musicFileUrl",url);          map.put("music_file_name", tilte);          mylist.add(map);         }       cursor.moveToNext();       }       }return mylist;}



更多相关文章

  1. 关于Android初级逻辑思考(续)——android文件夹讲解
  2. 用TextView自定义按钮
  3. Android中的ClassLoader与dex文件加密实现分析
  4. Android的NDK开发(5)————Android(安卓)JNI层实现文件的read
  5. Android拍照、录像、录音代码范例
  6. Windows环境下搭建Cocos2dx的android开发环境
  7. 【Android】hwbinder的selinux配置
  8. 【Android(安卓)应用开发】 Android(安卓)APK 反编译 混淆 重编
  9. android adb shell 命令大全

随机推荐

  1. ue4 创建Android和ios ar应用
  2. Android(安卓)Studio下载、安装和配置+SD
  3. Android中shape的使用
  4. android fragment android.support.v4.ap
  5. android 数据库操作 (非ContentProvider)
  6. android java 分享功能实现,Cocos2d-x3.3
  7. Ubuntu上adb找不到设备问题小结
  8. 关于 Android(安卓)进程保活,你所需要知道
  9. Android(安卓)Touch事件传递机制解析
  10. android init进程--init.rc解析过程与执