Android的MP3文件过滤形式SD卡 [英] Android MP3 file Filtering form sdcard

查看:355
本文介绍了Android的MP3文件过滤形式SD卡的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经开发的应用程序从SD卡读取数据。

我使用该选项进行过滤,但是当我用logcat中我发现,我只能得到唯一的数据文件 SD卡/ some_dir

但我有声音文件到不同的文件夹,所以如果有可能给我的通用code 以获取所有MP3文件形成SD卡。

 类FileExtensionFilter实现了FilenameFilter {
        公共布尔接受(文件目录,字符串名称){
            回报(name.endsWith(MP3)|| name.endsWith()MP3);
        }
    }


解决方案

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

 包com.designfuture.music.util;进口的java.io.File;
进口java.io.FileFilter中;
进口java.io.FilenameFilter;进口com.designfuture.framework.util.LogHelper;公共类AudioFileFilter实现的FileFilter {    受保护的静态最后弦乐TAG =AudioFileFilter;
    / **
     *允许目录
     * /
    私人最终布尔allowDirectories;    公共AudioFileFilter(布尔allowDirectories){
        this.allowDirectories = allowDirectories;
    }    公共AudioFileFilter(){
        这是真的);
    }    @覆盖
    公共布尔接受(文件f){
        如果(f.isHidden()||!f.canRead()){
            返回false;
        }        如果(f.isDirectory()){
            返回allowDirectories;
        }
        字符串EXT = getFileExtension(F);
        如果(EXT == NULL)返回false;
        尝试{
            如果(SupportedFileFormat.valueOf(ext.toUpperCase())!= NULL){
                返回true;
            }
        }赶上(抛出:IllegalArgumentException五){
            //不知道枚举值
            返回false;
        }
        返回false;
    }    公共字符串getFileExtension(文件f){
        INT I = f.getName()lastIndexOf('。')。
        如果(I 0){
            。返回f.getName()子第(i + 1);
        }其他
            返回null;
    }    / **
     *文件格式,目前支持库
     * /
    公共枚举SupportedFileFormat
    {
        _3GP(3GP),
        MP4(MP4),
        M4A(M4A),
        AAC(AAC),
        TS(TS),
        FLAC(后手),
        MP3(MP3),
        MID(中间),
        XMF(XMF),
        MXMF(mxmf),
        RTTTL(RTTTL),
        RTX(RTX),
        OTA(OTA),
        IMY(IMY),
        OGG(奥格),
        MKV(MKV),
        WAV(W​​AV);        私人字符串filesuffix;        SupportedFileFormat(字符串filesuffix){
            this.filesuffix = filesuffix;
        }        公共字符串getFilesuffix(){
            返回filesuffix;
        }
    }}

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

解决方案

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

}

这篇关于Android的MP3文件过滤形式SD卡的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆