2

我想从存储卡和手机内存中获取所有媒体文件/歌曲的列表。有没有办法做到这一点?谢谢。

4

1 回答 1

2

内容解析器方式--> MediaStore.Audio

Querying the Content Provider through Content Resolver Implement proper ListView and add the data which you get after querying Content resolver to ListView via Adapter

    String[] columns = { android.provider.MediaStore.Audio.Albums._ID,
    android.provider.MediaStore.Audio.Albums.ALBUM };
    cursor = managedQuery(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,columns, null, null, null);
    String[] displayFields = new String[] { MediaStore.Audio.Albums.ALBUM };
    int[] displayViews = new int[] { android.R.id.text1 };
   setListAdapter(new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1, cursor, displayFields,displayViews));

传统方式 :: 扫描 SD 卡中的 .mp3 文件

使用以下代码获取 sdcard 目录的路径。

File root = Environment.getExternalStorageDirectory();
String rootPath= root.getPath();

从 rootPath 位置,您可以构建 SD 卡上任何文件的路径。例如,如果在 处有图像/DCIM/Camera/a.jpg,则绝对路径为rootPath + "/DCIM/Camera/a.jpg".

但是,要列出 SDCard 中的所有文件,您可以使用以下代码

String listOfFileNames[] = root.list(YOUR_FILTER);

listOfFileNames将具有 SD 卡中存在的所有文件的名称,并通过过滤器设置的标准。

假设您只想列出 mp3 文件,然后将以下过滤器类名称传递给 list() 函数。

FilenameFilter mp3Filter = new FilenameFilter() {
File f;
public boolean accept(File dir, String name) {

    if(name.endsWith(".mp3")){
    return true;
    }

    f = new File(dir.getAbsolutePath()+"/"+name);

    return f.isDirectory();
  }
};
于 2013-01-04T14:28:51.450 回答