Search code examples
androidaudio-playerandroid-music-player

Android MP3 file Filtering form sdcard


I have developing the application to fetching data from sd card.

I used this option for filtering but when I used logcat I found that I only get data of only file sdcard/some_dir

But I have sound files into different folder so if possible give me universal code to fetch all the mp3 file form the sdcard.

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

Solution

  • This is mine AudioFilter :) Hope it will help you

    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;
            }
        }
    
    }