2012-04-27 52 views
3

我已经开发了从SD卡中获取数据的应用程序。Android的MP3文件过滤形式的SD卡

我用这个选项进行筛选,但是当我用logcat中我发现,我只得到的只是数据文件sdcard/some_dir

但我有声音文件转换为不同的文件夹,所以如果可能的话给我通用代码获取所有mp3文件形成SD卡。

class FileExtensionFilter implements FilenameFilter { 
     public boolean accept(File dir, String name) { 
      return (name.endsWith(".mp3") || name.endsWith(".MP3")); 
     } 
    } 

回答

5

这是我的AudioFilter :)希望它会帮助你

package com.designfuture.music.util; 

import java.io.File; 
import java.io.FileFilter; 
import java.io.FilenameFilter; 

import com.designfuture.framework.util.LogHelper; 

public class AudioFileFilter implements FileFilter { 

    protected static final String TAG = "AudioFileFilter"; 
    /** 
    * allows Directories 
    */ 
    private final boolean allowDirectories; 

    public AudioFileFilter(boolean allowDirectories) { 
     this.allowDirectories = allowDirectories; 
    } 

    public AudioFileFilter() { 
     this(true); 
    } 

    @Override 
    public boolean accept(File f) { 
     if (f.isHidden() || !f.canRead()) { 
      return false; 
     } 

     if (f.isDirectory()) {    
      return allowDirectories; 
     } 
     String ext = getFileExtension(f); 
     if (ext == null) return false; 
     try { 
      if (SupportedFileFormat.valueOf(ext.toUpperCase()) != null) { 
       return true; 
      } 
     } catch(IllegalArgumentException e) { 
      //Not known enum value 
      return false;  
     } 
     return false; 
    } 

    public String getFileExtension(File f) { 
     int i = f.getName().lastIndexOf('.'); 
     if (i > 0) { 
      return f.getName().substring(i+1); 
     } else 
      return null; 
    } 

    /** 
    * Files formats currently supported by Library 
    */ 
    public enum SupportedFileFormat 
    { 
     _3GP("3gp"), 
     MP4("mp4"), 
     M4A("m4a"), 
     AAC("aac"), 
     TS("ts"), 
     FLAC("flac"), 
     MP3("mp3"), 
     MID("mid"), 
     XMF("xmf"), 
     MXMF("mxmf"), 
     RTTTL("rtttl"), 
     RTX("rtx"), 
     OTA("ota"), 
     IMY("imy"), 
     OGG("ogg"), 
     MKV("mkv"), 
     WAV("wav"); 

     private String filesuffix; 

     SupportedFileFormat(String filesuffix) { 
      this.filesuffix = filesuffix; 
     } 

     public String getFilesuffix() { 
      return filesuffix; 
     } 
    } 

}