Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 播放位于“资源”文件夹中的媒体文件_Android_Assets_Android Mediaplayer - Fatal编程技术网

Android 播放位于“资源”文件夹中的媒体文件

Android 播放位于“资源”文件夹中的媒体文件,android,assets,android-mediaplayer,Android,Assets,Android Mediaplayer,我目前在android项目的原始文件夹中有一组媒体文件,这些文件在使用mediaplayer类调用时可以快速加载和播放。我需要添加这些文件的更多变体并将它们分类到文件夹中,但显然原始文件夹不支持文件夹。我能从assets文件夹快速加载这些文件并用mediaplayer播放它们吗?如果是,如何播放?这里有一个功能,可以播放资产文件夹中的媒体文件。您可以将它与smth一起使用,如play(这是“sounds/1/sound.mp3”) 我有一个方法,它通过扩展名返回资产文件夹中文件夹中的所有文件:

我目前在android项目的原始文件夹中有一组媒体文件,这些文件在使用mediaplayer类调用时可以快速加载和播放。我需要添加这些文件的更多变体并将它们分类到文件夹中,但显然原始文件夹不支持文件夹。我能从assets文件夹快速加载这些文件并用mediaplayer播放它们吗?如果是,如何播放?

这里有一个功能,可以播放资产文件夹中的媒体文件。您可以将它与smth一起使用,如
play(这是“sounds/1/sound.mp3”)


我有一个方法,它通过扩展名返回资产文件夹中文件夹中的所有文件:

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;
    }
这将返回资产根文件夹中的所有mp3文件

如果您使用以下命令调用它:

getAllFilesInAssetByExtension(yourcontext, "somefolder", ".mp3");
这将在“somefolder”中搜索mp3文件

现在您已经列出了要打开的所有文件,您将需要:

AssetFileDescriptor descriptor = getAssets().openFd("myfile");
要播放文件,只需执行以下操作:

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();

希望这对您有所帮助

您可以将mp3文件放在:res/raw文件夹中,如myringtone.mp3或您所愿

MediaPlayer mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.myringtone);
mediaPlayer.start();
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();
MediaPlayer mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.myringtone);
mediaPlayer.start();