如何在android中通过编程从SD卡中查找mp3文件

如何在android中通过编程从SD卡中查找mp3文件,android,filter,mp3,Android,Filter,Mp3,我是android编程新手,请任何人帮助我在我的android设备中查找所有.mp3文件 private String[] videoExtensions; videoExtensions = new String[2]; videoExtensions[0] = "mp3"; videoExtensions[1] = "3gp"; 在onCreate()方法中的声明之后,在下面的某个方法中设置代码并调用它。根据您的需要在我的代码中进行更改 试一试{ File File=new文件(“mnt/

我是android编程新手,请任何人帮助我在我的android设备中查找所有.mp3文件

private String[] videoExtensions;
videoExtensions = new String[2];
videoExtensions[0] = "mp3";
videoExtensions[1] = "3gp";
在onCreate()方法中的声明之后,在下面的某个方法中设置代码并调用它。根据您的需要在我的代码中进行更改

试一试{

File File=new文件(“mnt/sdcard/DCIM/Camera”);
File[]listOfFiles=File.listFiles();
videoArray=新的ArrayList();
videoHashmap=新HashMap();
for(int i=videoIndex;i(响应时间戳视频/1000L)){
插入行(视频,行数据视频);
}
}
}
}
}捕获(例外e){
e、 printStackTrace();
}

您可以使用递归搜索。将此函数与要开始搜索.mp3文件的目录路径(例如“/mnt/sdcard”)一起使用

public Vector mp3Files=new Vector();
私有无效搜索目录(字符串目录)
{
文件目录=新文件(目录);
if(dir.canRead()&&dir.exists()&&dir.isDirectory())
{
字符串[]filesInDirectory=dir.list();
if(filesInDirectory!=null)
{

对于(inti=0;i当然可以。代码未经测试

File dir =new File(Environment.getExternalStorageDirectory());
if (dir.exists()&&dir.isDirectory()){
  File[] files=dir.listFiles(new FilenameFilter(){
   @Override
   public boolean accept(File dir,String name){
     return name.contains(".mp3");
  }
  });    
   }
public ArrayList searchMP3File(ArrayList aListFilePath,String rootPath){
文件根文件=新文件(根路径);
File[]aRootFileFilter=rootFile.listFiles(新文件过滤器(){
@凌驾
公共布尔接受(文件路径名){
if(pathname.getName().endsWith(“.mp3”))
返回true;
其他的
返回false;
}
});
if(aRootFileFilter!=null&&aRootFileFilter.length>0){
for(int i=0;i0)
aListFilePath=aListSubFile;
}
}
返回文件路径;
}

您应该使用MediaStore。下面是一个类似的示例代码:

private static ArrayList<SongModel> LoadSongsFromCard() {
    ArrayList<SongModel> songs = new ArrayList<SongModel>();

    // Filter only mp3s, only those marked by the MediaStore to be music and longer than 1 minute
    String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0"
            + " AND " + MediaStore.Audio.Media.MIME_TYPE + "= 'audio/mpeg'"
            + " AND " + MediaStore.Audio.Media.DURATION + " > 60000";

    final String[] projection = new String[] {
        MediaStore.Audio.Media._ID,             //0
        MediaStore.Audio.Media.TITLE,           //1
        MediaStore.Audio.Media.ARTIST,          //2
        MediaStore.Audio.Media.DATA,            //3
        MediaStore.Audio.Media.DISPLAY_NAME
    };

    final String sortOrder = MediaStore.Audio.AudioColumns.TITLE
            + " COLLATE LOCALIZED ASC";

    Cursor cursor = null;

    try {
        // the uri of the table that we want to query
        Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; //getContentUriForPath("");
        // query the db
        cursor = _context.getContentResolver().query(uri,
                projection, selection, null, sortOrder);
        if (cursor != null) {
            cursor.moveToFirst();                       
            while (!cursor.isAfterLast()) { 
                //if (cursor.getString(3).contains("AwesomePlaylists")) {
                    SongModel GSC = new SongModel();
                    GSC.ID = cursor.getLong(0);
                    GSC.songTitle = cursor.getString(1);
                    GSC.songArtist = cursor.getString(2);
                    GSC.path = cursor.getString(3);

                    // This code assumes genre is stored in the first letter of the song file name
                    String genreCodeString = cursor.getString(4).substring(0, 1);
                    if (!genreCodeString.isEmpty()) {
                        try {
                            GSC.genre = Short.parseShort(genreCodeString);
                        } catch (NumberFormatException ex) {
                            Random r = new Random();
                            GSC.genre = (short) r.nextInt(4);
                        } finally {
                            songs.add(GSC);
                        }
                    }
                //}
                cursor.moveToNext();
            }
        }
    } catch (Exception ex) {

    } finally {
        if (cursor != null) {
            cursor.close();
        }
    }

    return songs;
}
private static ArrayList loadsongsfromscard(){
ArrayList歌曲=新建ArrayList();
//仅过滤MP3,仅过滤MediaStore标记为音乐且长度超过1分钟的MP3
字符串选择=MediaStore.Audio.Media.IS_MUSIC+“!=0”
+“和”+MediaStore.Audio.Media.MIME_TYPE+“='Audio/mpeg'”
+“和”+MediaStore.Audio.Media.DURATION+“>60000”;
最终字符串[]投影=新字符串[]{
MediaStore.Audio.Media.\u ID,//0
MediaStore.Audio.Media.TITLE,//1
MediaStore.Audio.Media.ARTIST,//2
MediaStore.Audio.Media.DATA,//3
MediaStore.Audio.Media.DISPLAY\u名称
};
最终字符串排序器=MediaStore.Audio.AudioColumns.TITLE
+“整理本地化ASC”;
游标=空;
试一试{
//要查询的表的uri
Uri Uri=MediaStore.Audio.Media.EXTERNAL_CONTENT_Uri;//getContentUriForPath(“”);
//查询数据库
游标=_context.getContentResolver().query(uri,
投影、选择、空值、排序器);
如果(光标!=null){
cursor.moveToFirst();
而(!cursor.isAfterLast()){
//if(cursor.getString(3).contains(“AwesomePlaylists”)){
SongModel GSC=新的SongModel();
GSC.ID=cursor.getLong(0);
GSC.songtTitle=cursor.getString(1);
GSC.songArtist=cursor.getString(2);
GSC.path=cursor.getString(3);
//此代码假定流派存储在歌曲文件名的第一个字母中
字符串genreCodeString=cursor.getString(4).substring(0,1);
如果(!genreCodeString.isEmpty(
File dir =new File(Environment.getExternalStorageDirectory());
if (dir.exists()&&dir.isDirectory()){
  File[] files=dir.listFiles(new FilenameFilter(){
   @Override
   public boolean accept(File dir,String name){
     return name.contains(".mp3");
  }
  });    
   }
public ArrayList<String> searchMP3File(ArrayList<String> aListFilePath, String rootPath) {

    File rootFile = new File(rootPath); 

    File[] aRootFileFilter = rootFile.listFiles(new FileFilter() {

        @Override
        public boolean accept(File pathname) {
            if(pathname.getName().endsWith(".mp3"))
                return true;
            else 
                return false;
        }
    });

    if(aRootFileFilter != null && aRootFileFilter.length > 0) {
        for(int i = 0; i < aRootFileFilter.length; i++) {
            aListFilePath.add(aRootFileFilter[i].getPath());
        }
    }
    File[] aRootFile = rootFile.listFiles();
    for(int i = 0; i < aRootFile.length; i++) {
        if(aRootFile[i].isDirectory()) {
            ArrayList<String> aListSubFile = searchMP3File(aListFilePath, aRootFile[i].getPath());
            if(aListSubFile != null && aListSubFile.size() > 0)
                aListFilePath = aListSubFile;
        }
    }

    return aListFilePath;
}
private static ArrayList<SongModel> LoadSongsFromCard() {
    ArrayList<SongModel> songs = new ArrayList<SongModel>();

    // Filter only mp3s, only those marked by the MediaStore to be music and longer than 1 minute
    String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0"
            + " AND " + MediaStore.Audio.Media.MIME_TYPE + "= 'audio/mpeg'"
            + " AND " + MediaStore.Audio.Media.DURATION + " > 60000";

    final String[] projection = new String[] {
        MediaStore.Audio.Media._ID,             //0
        MediaStore.Audio.Media.TITLE,           //1
        MediaStore.Audio.Media.ARTIST,          //2
        MediaStore.Audio.Media.DATA,            //3
        MediaStore.Audio.Media.DISPLAY_NAME
    };

    final String sortOrder = MediaStore.Audio.AudioColumns.TITLE
            + " COLLATE LOCALIZED ASC";

    Cursor cursor = null;

    try {
        // the uri of the table that we want to query
        Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; //getContentUriForPath("");
        // query the db
        cursor = _context.getContentResolver().query(uri,
                projection, selection, null, sortOrder);
        if (cursor != null) {
            cursor.moveToFirst();                       
            while (!cursor.isAfterLast()) { 
                //if (cursor.getString(3).contains("AwesomePlaylists")) {
                    SongModel GSC = new SongModel();
                    GSC.ID = cursor.getLong(0);
                    GSC.songTitle = cursor.getString(1);
                    GSC.songArtist = cursor.getString(2);
                    GSC.path = cursor.getString(3);

                    // This code assumes genre is stored in the first letter of the song file name
                    String genreCodeString = cursor.getString(4).substring(0, 1);
                    if (!genreCodeString.isEmpty()) {
                        try {
                            GSC.genre = Short.parseShort(genreCodeString);
                        } catch (NumberFormatException ex) {
                            Random r = new Random();
                            GSC.genre = (short) r.nextInt(4);
                        } finally {
                            songs.add(GSC);
                        }
                    }
                //}
                cursor.moveToNext();
            }
        }
    } catch (Exception ex) {

    } finally {
        if (cursor != null) {
            cursor.close();
        }
    }

    return songs;
}