Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
475 views
in Technique[技术] by (71.8m points)

android - Play media files located in assets folder

I currently have a set of media files in the raw folder of the android project that are loaded quickly and played when called using the mediaplayer class. I need to add more variations of these files and categorize them into folders, but apparently the raw folder does not support folders. Would I be able to quickly load these files from the assets folder and play them with mediaplayer? If so, how?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I've this method that returns the all files by extension in a folder inside asset folder:

public static String[] getAllFilesInAssetByExtension(Context context, String path, String extension){
        Assert.assertNotNull(context);

        try {
            String[] files = context.getAssets().list(path);

            if(StringHelper.isNullOrEmpty(extension)){
                return files;
            }

            List<String> filesWithExtension = new ArrayList<String>();

            for(String file : files){
                if(file.endsWith(extension)){
                    filesWithExtension.add(file);
                }
            }

            return filesWithExtension.toArray(new String[filesWithExtension.size()]);  
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return null;
    }

if you call it using:

getAllFilesInAssetByExtension(yourcontext, "", ".mp3");

this will return all my mp3 files in the root of assets folder.

if you call it using:

getAllFilesInAssetByExtension(yourcontext, "somefolder", ".mp3");

this will search in "somefolder" for mp3 files

Now that you have list all files to open you will need this:

AssetFileDescriptor descriptor = getAssets().openFd("myfile");

To play the file just do:

MediaPlayer player = new MediaPlayer();

long start = descriptor.getStartOffset();
long end = descriptor.getLength();

player.setDataSource(this.descriptor.getFileDescriptor(), start, end);
player.prepare();

player.setVolume(1.0f, 1.0f);
player.start();

Hope this helps


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...