安卓系统在开机的时候就会自动检测SD卡的文件,并将音乐文件搜集生成一个数据库文件。我们只需访问数据库表中的信息就能得到所需的文件

代码如下

// 获取所有歌曲Cursor cursor = cr.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null,null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);

得到cursor对象就能访问cursor里的媒体资源

if (cursor.moveToFirst()) {do {String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));String singer = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));String album = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));long size = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.SIZE));long time = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));String url = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));int _id = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media._ID));String name = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));String sbr = name.substring(name.length() - 3,name.length());} while (cursor.moveToNext());

但是如果你的手机在开机后又下载了新的歌曲文件通过上面的方法是访问不到的,因为它还没有被加到数据表中,这样我们就要重写文件搜索的方法。


//获取该路径下的所有文件public static List<String> getAllFile(String path){List<String> fileList = new ArrayList<String>();File folder = new File(path);addFile(fileList, folder);return fileList;}public static void addFile(List<String> fileList,File f){if(f.isDirectory()){File[] files = f.listFiles();for(File f1 : files){addFile(fileList, f1);}}else{String filename = f.getName();if(filename.length()>4&&filename.substring(filename.length()-4).equalsIgnoreCase(".mp3")){fileList.add(f.getAbsolutePath());}}}

我们只需在需要的地方调用
getAllFile(Environment.getExternalStorageDirectory().getAbsolutePath());


   

更多相关文章

  1. Android读取手机文件列表
  2. android刷字体教程
  3. 【WEB服务器】i-jetty环境搭配与编译 .
  4. 在Android中修改快捷方式的图标
  5. 在Android(安卓)Studio中修改maven私库的地址
  6. Android(安卓)Studio 使用说明(一)
  7. android webview 加载本地html并且解决多图卡顿问题
  8. 【android-cocos2d-X iconv.h】在android下使用iconv
  9. Android(安卓)使用NDK (JNI)简单解压7z压缩文件

随机推荐

  1. android JNI 学习笔记1
  2. Android深入理解Context--Service中Conte
  3. android捕获全局异常处理,不闪退
  4. Android中如何处理Sqlite查询结果中的NUL
  5. Android 性能优化笔记 一 布局优化
  6. android selector下的属性值
  7. android 获得当前view在屏幕的坐标
  8. android三种动画详解
  9. Android:简单的webView与js交互
  10. Android全屏